mirror of
https://github.com/wabbajack-tools/wabbajack.git
synced 2024-08-30 18:42:17 +00:00
Enable website/readme buttons on launcher
This commit is contained in:
parent
2a297d45b2
commit
6253f3d2ee
@ -4,13 +4,14 @@
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
|
||||
x:Class="Wabbajack.App.Controls.ResourceView">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<TextBlock x:Name="ResourceName" Width="100" HorizontalAlignment="Left" VerticalAlignment="Center" />
|
||||
<Label Width="100" HorizontalContentAlignment="Right" VerticalAlignment="Center">Tasks:</Label>
|
||||
<TextBox x:Name="MaxTasks" Width="20" HorizontalAlignment="Left" VerticalAlignment="Center" />
|
||||
<Label Width="100" HorizontalContentAlignment="Right" VerticalAlignment="Center">Throughput:</Label>
|
||||
<TextBox x:Name="MaxThroughput" Width="20" HorizontalAlignment="Left" VerticalAlignment="Center" />
|
||||
<Label Width="100" HorizontalContentAlignment="Right" VerticalAlignment="Center">Status:</Label>
|
||||
<TextBlock x:Name="CurrentThrougput" Width="50" HorizontalAlignment="Left" VerticalAlignment="Center" />
|
||||
</StackPanel>
|
||||
<Grid ColumnDefinitions="Auto, Auto, 300" RowDefinitions="20, 20, 20">
|
||||
<TextBlock Grid.Row="0" Grid.Column="0" x:Name="ResourceName"/>
|
||||
<TextBlock Grid.Row="0" Grid.Column="1" >Total Throughput:</TextBlock>
|
||||
<TextBlock Grid.Row="0" Grid.Column="2" x:Name="CurrentThrougput"/>
|
||||
<TextBlock Grid.Row="1" Grid.Column="1">Tasks:</TextBlock>
|
||||
<ButtonSpinner Grid.Row="1" Grid.Column="2"></ButtonSpinner>
|
||||
<TextBlock Grid.Row="2" Grid.Column="1">Throughput:</TextBlock>
|
||||
<Slider Grid.Row="2" Grid.Column="2" Minimum="0" Maximum="16384"></Slider>
|
||||
|
||||
</Grid>
|
||||
</UserControl>
|
@ -15,10 +15,20 @@ public partial class ResourceView : ReactiveUserControl<ResourceViewModel>, IAct
|
||||
this.OneWayBind(ViewModel, vm => vm.Name, view => view.ResourceName.Text)
|
||||
.DisposeWith(disposables);
|
||||
|
||||
this.Bind(ViewModel, vm => vm.MaxTasks, view => view.MaxTasks.Text)
|
||||
.DisposeWith(disposables);
|
||||
this.Bind(ViewModel, vm => vm.MaxThroughput, view => view.MaxThroughput.Text)
|
||||
.DisposeWith(disposables);
|
||||
//this.Bind(ViewModel, vm => vm.MaxTasks, view => view.MaxTasks.Text)
|
||||
// .DisposeWith(disposables);
|
||||
/*this.Bind(ViewModel, vm => vm.MaxThroughput, view => view.MaxThroughput.Text,
|
||||
l => l is 0 or long.MaxValue ? "∞" : (l / 1024 / 1024).ToString(),
|
||||
v =>
|
||||
{
|
||||
v = v.Trim();
|
||||
if (v is "0" or "∞" || v == long.MaxValue.ToString())
|
||||
{
|
||||
return long.MaxValue;
|
||||
}
|
||||
return long.TryParse(v, out var l) ? l * 1024 * 1024 : long.MaxValue;
|
||||
})
|
||||
.DisposeWith(disposables);*/
|
||||
|
||||
this.OneWayBind(ViewModel, vm => vm.CurrentThroughput, view => view.CurrentThrougput.Text,
|
||||
val => val.FileSizeToString())
|
||||
|
@ -24,9 +24,9 @@
|
||||
<TextBox Grid.Column="1" Grid.Row="1" IsEnabled="False" Height="20" x:Name="InstallPath" />
|
||||
|
||||
<Grid Grid.Column="1" Grid.Row="3" Grid.ColumnDefinitions="*, *, *" HorizontalAlignment="Center">
|
||||
<Button Grid.Column="0" x:Name="WebsiteButton">Website</Button>
|
||||
<Button Grid.Column="1" x:Name="ReadmeButton">Readme</Button>
|
||||
<Button Grid.Column="2" x:Name="LocalFilesButton">Local Files</Button>
|
||||
<Button Grid.Column="0" x:Name="WebsiteButton" Click="ShowWebsite">Website</Button>
|
||||
<Button Grid.Column="1" x:Name="ReadmeButton" Click="ShowReadme">Readme</Button>
|
||||
<Button Grid.Column="2" x:Name="LocalFilesButton" Click="ShowLocalFiles">Local Files</Button>
|
||||
</Grid>
|
||||
|
||||
<controls:LargeIconButton x:Name="PlayGame" Margin="40, 0, 0, 0" Grid.Row="0" Grid.Column="2"
|
||||
|
@ -1,6 +1,10 @@
|
||||
using System;
|
||||
using System.Reactive.Disposables;
|
||||
using Avalonia.Interactivity;
|
||||
using ReactiveUI;
|
||||
using Wabbajack.App.Utilities;
|
||||
using Wabbajack.App.Views;
|
||||
using Wabbajack.Installer;
|
||||
|
||||
namespace Wabbajack.App.Screens;
|
||||
|
||||
@ -25,4 +29,19 @@ public partial class LauncherView : ScreenBase<LauncherViewModel>
|
||||
.DisposeWith(disposables);
|
||||
});
|
||||
}
|
||||
|
||||
private void ShowWebsite(object? sender, RoutedEventArgs e)
|
||||
{
|
||||
OSUtil.OpenWebsite(ViewModel!.Setting!.StrippedModListData?.Website!);
|
||||
}
|
||||
|
||||
private void ShowReadme(object? sender, RoutedEventArgs e)
|
||||
{
|
||||
OSUtil.OpenWebsite(new Uri(ViewModel!.Setting!.StrippedModListData?.Readme!));
|
||||
}
|
||||
|
||||
private void ShowLocalFiles(object? sender, RoutedEventArgs e)
|
||||
{
|
||||
OSUtil.OpenFolder(ViewModel!.Setting!.Install);
|
||||
}
|
||||
}
|
@ -225,7 +225,8 @@ public class StandardInstallationViewModel : ViewModelBase
|
||||
Install = config.Install,
|
||||
Metadata = config.Metadata,
|
||||
ModList = config.ModlistArchive,
|
||||
Image = path
|
||||
Image = path,
|
||||
StrippedModListData = config.ModList.Strip()
|
||||
});
|
||||
|
||||
MessageBus.Current.SendMessage(new ConfigureLauncher(config.Install));
|
||||
|
38
Wabbajack.App/Utilities/OSUtil.cs
Normal file
38
Wabbajack.App/Utilities/OSUtil.cs
Normal file
@ -0,0 +1,38 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using Microsoft.CodeAnalysis;
|
||||
using Wabbajack.Common;
|
||||
using Wabbajack.Paths;
|
||||
using Wabbajack.Paths.IO;
|
||||
|
||||
namespace Wabbajack.App.Utilities;
|
||||
|
||||
public static class OSUtil
|
||||
{
|
||||
public static void OpenWebsite(Uri uri)
|
||||
{
|
||||
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
|
||||
{
|
||||
var helper = new ProcessHelper()
|
||||
{
|
||||
Path = "cmd.exe".ToRelativePath().RelativeTo(KnownFolders.WindowsSystem32),
|
||||
Arguments = new[] {"/C", $"rundll32 url.dll,FileProtocolHandler {uri}"}
|
||||
};
|
||||
helper.Start().FireAndForget();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static void OpenFolder(AbsolutePath path)
|
||||
{
|
||||
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
|
||||
{
|
||||
var helper = new ProcessHelper()
|
||||
{
|
||||
Path = "explorer.exe".ToRelativePath().RelativeTo(KnownFolders.Windows),
|
||||
Arguments = new object[] {path}
|
||||
};
|
||||
helper.Start().FireAndForget();
|
||||
}
|
||||
}
|
||||
}
|
@ -124,7 +124,8 @@ public class InstallConfigurationViewModel : ViewModelBase, IActivatableViewMode
|
||||
ModList = ModListPath,
|
||||
Downloads = Download,
|
||||
Install = Install,
|
||||
Metadata = metadata
|
||||
Metadata = metadata,
|
||||
StrippedModListData = ModList?.Strip()
|
||||
});
|
||||
|
||||
await _settingsManager.Save("last-install-path", ModListPath);
|
||||
|
@ -97,5 +97,7 @@ public class NexusLoginViewModel : GuidedWebViewModel
|
||||
Cookies = cookies,
|
||||
ApiKey = key
|
||||
});
|
||||
|
||||
MessageBus.Current.SendMessage(new NavigateBack());
|
||||
}
|
||||
}
|
@ -9,8 +9,11 @@ using System.Web;
|
||||
using CefNet;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Wabbajack.App.Extensions;
|
||||
using Wabbajack.App.Messages;
|
||||
using Wabbajack.DTOs.Logins;
|
||||
using Wabbajack.Services.OSIntegrated;
|
||||
using Xunit.Sdk;
|
||||
using MessageBus = ReactiveUI.MessageBus;
|
||||
|
||||
namespace Wabbajack.App.ViewModels;
|
||||
|
||||
@ -87,6 +90,8 @@ public abstract class OAuthLoginViewModel<TLoginType> : GuidedWebViewModel
|
||||
Cookies = cookies,
|
||||
ResultState = data!
|
||||
});
|
||||
|
||||
MessageBus.Current.SendMessage(new NavigateBack());
|
||||
}
|
||||
|
||||
private class AsyncSchemeHandler : CefSchemeHandlerFactory
|
||||
|
@ -66,4 +66,20 @@ public class ModList
|
||||
/// Whether the Modlist is NSFW or not
|
||||
/// </summary>
|
||||
public bool IsNSFW { get; set; }
|
||||
|
||||
public ModList Strip()
|
||||
{
|
||||
return new ModList
|
||||
{
|
||||
Author = Author,
|
||||
Description = Description,
|
||||
GameType = GameType,
|
||||
Name = Name,
|
||||
Readme = Readme,
|
||||
WabbajackVersion = WabbajackVersion,
|
||||
Website = Website,
|
||||
Version = Version,
|
||||
IsNSFW = IsNSFW,
|
||||
};
|
||||
}
|
||||
}
|
@ -20,5 +20,5 @@ public class InstallationConfigurationSetting
|
||||
public ModlistMetadata? Metadata { get; set; }
|
||||
|
||||
public AbsolutePath Image { get; set; }
|
||||
|
||||
public ModList? StrippedModListData { get; set; }
|
||||
}
|
@ -11,6 +11,9 @@ public static class KnownFolders
|
||||
public static AbsolutePath AppDataLocal =>
|
||||
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData).ToAbsolutePath();
|
||||
|
||||
public static AbsolutePath WindowsSystem32 => Environment.GetFolderPath(Environment.SpecialFolder.System).ToAbsolutePath();
|
||||
|
||||
public static AbsolutePath WabbajackAppLocal => AppDataLocal.Combine("Wabbajack");
|
||||
public static AbsolutePath CurrentDirectory => Directory.GetCurrentDirectory().ToAbsolutePath();
|
||||
public static AbsolutePath Windows => Environment.GetFolderPath(Environment.SpecialFolder.Windows).ToAbsolutePath();
|
||||
}
|
Loading…
Reference in New Issue
Block a user