mirror of
https://github.com/bloxstraplabs/bloxstrap.git
synced 2025-04-21 10:01:27 -07:00
Finalize update for v1.2.0
- Features - Added three new bootstrapper styles (Vista, Legacy 2009 and Progress Dark Theme) - Added ability to disable rich presence activity buttons - Added ability to restore old mouse cursor - Quality of Life - Refactored code for bootstrapper styles
This commit is contained in:
parent
6152bce70d
commit
462d48fafd
@ -9,8 +9,8 @@
|
|||||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
<Platforms>AnyCPU;x86</Platforms>
|
<Platforms>AnyCPU;x86</Platforms>
|
||||||
<ApplicationIcon>Bloxstrap.ico</ApplicationIcon>
|
<ApplicationIcon>Bloxstrap.ico</ApplicationIcon>
|
||||||
<Version>1.1.0</Version>
|
<Version>1.2.0</Version>
|
||||||
<FileVersion>1.1.0.0</FileVersion>
|
<FileVersion>1.2.0.0</FileVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
@ -27,6 +27,12 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Compile Update="Dialogs\BootstrapperStyles\LegacyDialog2009.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="Dialogs\BootstrapperStyles\ProgressDialogDark.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
<Compile Update="Properties\Resources.Designer.cs">
|
<Compile Update="Properties\Resources.Designer.cs">
|
||||||
<DesignTime>True</DesignTime>
|
<DesignTime>True</DesignTime>
|
||||||
<AutoGen>True</AutoGen>
|
<AutoGen>True</AutoGen>
|
||||||
|
@ -81,8 +81,6 @@ namespace Bloxstrap
|
|||||||
|
|
||||||
CheckIfRunning();
|
CheckIfRunning();
|
||||||
|
|
||||||
// lots of try/catches here... lol
|
|
||||||
|
|
||||||
Message = $"Uninstalling {Program.ProjectName}...";
|
Message = $"Uninstalling {Program.ProjectName}...";
|
||||||
|
|
||||||
Program.SettingsManager.ShouldSave = false;
|
Program.SettingsManager.ShouldSave = false;
|
||||||
@ -122,7 +120,6 @@ namespace Bloxstrap
|
|||||||
catch (Exception) { }
|
catch (Exception) { }
|
||||||
|
|
||||||
ShowSuccess($"{Program.ProjectName} has been uninstalled");
|
ShowSuccess($"{Program.ProjectName} has been uninstalled");
|
||||||
Program.Exit();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -91,9 +91,12 @@ namespace Bloxstrap
|
|||||||
File.Delete(filename);
|
File.Delete(filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (VersionGuid != Program.Settings.VersionGuid)
|
||||||
|
{
|
||||||
// and also to delete our old version folder
|
// and also to delete our old version folder
|
||||||
Directory.Delete(Path.Combine(Program.BaseDirectory, "Versions", Program.Settings.VersionGuid), true);
|
Directory.Delete(Path.Combine(Program.BaseDirectory, "Versions", Program.Settings.VersionGuid), true);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
CancelEnabled = false;
|
CancelEnabled = false;
|
||||||
|
|
||||||
@ -115,6 +118,7 @@ namespace Bloxstrap
|
|||||||
// but for now, let's just keep it at this
|
// but for now, let's just keep it at this
|
||||||
|
|
||||||
await ModifyDeathSound();
|
await ModifyDeathSound();
|
||||||
|
await ModifyMouseCursor();
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void DownloadPackage(Package package)
|
private async void DownloadPackage(Package package)
|
||||||
@ -204,5 +208,36 @@ namespace Bloxstrap
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void ExtractFilesFromPackage(string packageName, string[] files)
|
||||||
|
{
|
||||||
|
Package? package = VersionPackageManifest.Find(x => x.Name == packageName);
|
||||||
|
|
||||||
|
if (package is null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
DownloadPackage(package);
|
||||||
|
|
||||||
|
string packageLocation = Path.Combine(DownloadsFolder, package.Signature);
|
||||||
|
string packageFolder = Path.Combine(VersionFolder, PackageDirectories[package.Name]);
|
||||||
|
|
||||||
|
using (ZipArchive archive = ZipFile.OpenRead(packageLocation))
|
||||||
|
{
|
||||||
|
foreach (string fileName in files)
|
||||||
|
{
|
||||||
|
ZipArchiveEntry? entry = archive.Entries.Where(x => x.FullName == fileName).FirstOrDefault();
|
||||||
|
|
||||||
|
if (entry is null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
string fileLocation = Path.Combine(packageFolder, entry.FullName);
|
||||||
|
|
||||||
|
if (File.Exists(fileLocation))
|
||||||
|
File.Delete(fileLocation);
|
||||||
|
|
||||||
|
entry.ExtractToFile(fileLocation);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,4 @@
|
|||||||
using System.IO.Compression;
|
using Bloxstrap.Helpers;
|
||||||
|
|
||||||
using Bloxstrap.Helpers;
|
|
||||||
|
|
||||||
namespace Bloxstrap
|
namespace Bloxstrap
|
||||||
{
|
{
|
||||||
@ -12,10 +10,10 @@ namespace Bloxstrap
|
|||||||
string fileContentLocation = "content\\sounds\\ouch.ogg";
|
string fileContentLocation = "content\\sounds\\ouch.ogg";
|
||||||
string fileLocation = Path.Combine(VersionFolder, fileContentLocation);
|
string fileLocation = Path.Combine(VersionFolder, fileContentLocation);
|
||||||
|
|
||||||
string officialDeathSoundHash = VersionFileManifest[fileContentLocation];
|
string officialHash = VersionFileManifest[fileContentLocation];
|
||||||
string currentDeathSoundHash = Utilities.CalculateMD5(fileLocation);
|
string currentHash = Utilities.CalculateMD5(fileLocation);
|
||||||
|
|
||||||
if (Program.Settings.UseOldDeathSound && currentDeathSoundHash == officialDeathSoundHash)
|
if (Program.Settings.UseOldDeathSound && currentHash == officialHash)
|
||||||
{
|
{
|
||||||
// let's get the old one!
|
// let's get the old one!
|
||||||
|
|
||||||
@ -29,33 +27,37 @@ namespace Bloxstrap
|
|||||||
await response.Content.CopyToAsync(fileStream);
|
await response.Content.CopyToAsync(fileStream);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (!Program.Settings.UseOldDeathSound && currentDeathSoundHash != officialDeathSoundHash)
|
else if (!Program.Settings.UseOldDeathSound && currentHash != officialHash)
|
||||||
{
|
{
|
||||||
// who's lame enough to ever do this?
|
// who's lame enough to ever do this?
|
||||||
// well, we need to re-extract the one that's in the content-sounds.zip package
|
// well, we need to re-extract the one that's in the content-sounds.zip package
|
||||||
|
|
||||||
var package = VersionPackageManifest.Find(x => x.Name == "content-sounds.zip");
|
string[] files = { fileContentName };
|
||||||
|
ExtractFilesFromPackage("content-sounds.zip", files);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (package is null)
|
private async Task ModifyMouseCursor()
|
||||||
return;
|
|
||||||
|
|
||||||
DownloadPackage(package);
|
|
||||||
|
|
||||||
string packageLocation = Path.Combine(DownloadsFolder, package.Signature);
|
|
||||||
string packageFolder = Path.Combine(VersionFolder, PackageDirectories[package.Name]);
|
|
||||||
|
|
||||||
using (ZipArchive archive = ZipFile.OpenRead(packageLocation))
|
|
||||||
{
|
{
|
||||||
ZipArchiveEntry? entry = archive.Entries.Where(x => x.FullName == fileContentName).FirstOrDefault();
|
string baseFolder = Path.Combine(VersionFolder, "content\\textures\\");
|
||||||
|
|
||||||
if (entry is null)
|
string arrowCursor = "Cursors\\KeyboardMouse\\ArrowCursor.png";
|
||||||
return;
|
string arrowFarCursor = "Cursors\\KeyboardMouse\\ArrowFarCursor.png";
|
||||||
|
|
||||||
if (File.Exists(fileLocation))
|
string officialHash = VersionFileManifest["content\\textures\\Cursors\\KeyboardMouse\\ArrowCursor.png"];
|
||||||
File.Delete(fileLocation);
|
string currentHash = Utilities.CalculateMD5(Path.Combine(baseFolder, arrowCursor));
|
||||||
|
|
||||||
entry.ExtractToFile(fileLocation);
|
if (Program.Settings.UseOldMouseCursor && currentHash == officialHash)
|
||||||
}
|
{
|
||||||
|
// the old cursors are actually still in the content\textures\ folder, so we can just get them from there
|
||||||
|
|
||||||
|
File.Copy(Path.Combine(baseFolder, "ArrowCursor.png"), Path.Combine(baseFolder, arrowCursor), true);
|
||||||
|
File.Copy(Path.Combine(baseFolder, "ArrowFarCursor.png"), Path.Combine(baseFolder, arrowFarCursor), true);
|
||||||
|
}
|
||||||
|
else if (!Program.Settings.UseOldMouseCursor && currentHash != officialHash)
|
||||||
|
{
|
||||||
|
string[] files = { arrowCursor, arrowFarCursor };
|
||||||
|
ExtractFilesFromPackage("content-textures2.zip", files);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -26,16 +26,24 @@ namespace Bloxstrap
|
|||||||
switch (bootstrapperStyle)
|
switch (bootstrapperStyle)
|
||||||
{
|
{
|
||||||
case BootstrapperStyle.VistaDialog:
|
case BootstrapperStyle.VistaDialog:
|
||||||
new VistaDialog(this);
|
Application.Run(new VistaDialog(this));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case BootstrapperStyle.LegacyDialog:
|
case BootstrapperStyle.LegacyDialog2009:
|
||||||
Application.Run(new LegacyDialog(this));
|
Application.Run(new LegacyDialog2009(this));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case BootstrapperStyle.LegacyDialog2011:
|
||||||
|
Application.Run(new LegacyDialog2011(this));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case BootstrapperStyle.ProgressDialog:
|
case BootstrapperStyle.ProgressDialog:
|
||||||
Application.Run(new ProgressDialog(this));
|
Application.Run(new ProgressDialog(this));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case BootstrapperStyle.ProgressDialogDark:
|
||||||
|
Application.Run(new ProgressDialogDark(this));
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -136,6 +144,7 @@ namespace Bloxstrap
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
CloseDialog();
|
CloseDialog();
|
||||||
|
|
||||||
await gameClient.WaitForExitAsync();
|
await gameClient.WaitForExitAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,36 +1,29 @@
|
|||||||
|
using System.Diagnostics;
|
||||||
|
|
||||||
using Bloxstrap.Helpers;
|
using Bloxstrap.Helpers;
|
||||||
using Bloxstrap.Helpers.RSMM;
|
using Bloxstrap.Helpers.RSMM;
|
||||||
|
|
||||||
namespace Bloxstrap.Dialogs.BootstrapperStyles
|
namespace Bloxstrap.Dialogs.BootstrapperStyles
|
||||||
{
|
{
|
||||||
// TODO - universal implementation for winforms-based styles? (to reduce duplicate code)
|
public class BootstrapperStyleForm : Form, IBootstrapperStyle
|
||||||
|
|
||||||
// example: https://youtu.be/3K9oCEMHj2s?t=35
|
|
||||||
|
|
||||||
// so this specifically emulates the 2011 version of the legacy dialog,
|
|
||||||
// but once winforms code is cleaned up we could also do the 2009 version too
|
|
||||||
// example: https://youtu.be/VpduiruysuM?t=18
|
|
||||||
|
|
||||||
public partial class LegacyDialog : Form
|
|
||||||
{
|
{
|
||||||
private readonly Bootstrapper? Bootstrapper;
|
public Bootstrapper? Bootstrapper { get; set; }
|
||||||
|
|
||||||
public LegacyDialog(Bootstrapper? bootstrapper = null)
|
public virtual string Message { get; set; }
|
||||||
|
public virtual ProgressBarStyle ProgressStyle { get; set; }
|
||||||
|
public virtual int ProgressValue { get; set; }
|
||||||
|
public virtual bool CancelEnabled { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
public void SetupDialog()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
|
||||||
|
|
||||||
Bootstrapper = bootstrapper;
|
|
||||||
|
|
||||||
Icon icon = IconManager.GetIconResource();
|
|
||||||
this.Text = Program.ProjectName;
|
this.Text = Program.ProjectName;
|
||||||
this.Icon = icon;
|
this.Icon = IconManager.GetIconResource();
|
||||||
this.IconBox.Image = icon.ToBitmap();
|
|
||||||
|
|
||||||
if (Bootstrapper is null)
|
if (Bootstrapper is null)
|
||||||
{
|
{
|
||||||
this.Message.Text = "Click the Cancel button to return to preferences";
|
Message = "Select Cancel to return to preferences";
|
||||||
this.ButtonCancel.Enabled = true;
|
CancelEnabled = true;
|
||||||
this.ButtonCancel.Visible = true;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -46,6 +39,7 @@ namespace Bloxstrap.Dialogs.BootstrapperStyles
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public async void RunBootstrapper()
|
public async void RunBootstrapper()
|
||||||
{
|
{
|
||||||
if (Bootstrapper is null)
|
if (Bootstrapper is null)
|
||||||
@ -60,22 +54,10 @@ namespace Bloxstrap.Dialogs.BootstrapperStyles
|
|||||||
// string message = String.Format("{0}: {1}", ex.GetType(), ex.Message);
|
// string message = String.Format("{0}: {1}", ex.GetType(), ex.Message);
|
||||||
string message = ex.ToString();
|
string message = ex.ToString();
|
||||||
ShowError(message);
|
ShowError(message);
|
||||||
|
|
||||||
Program.Exit();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ShowError(string message)
|
public virtual void ShowSuccess(object sender, ChangeEventArgs<string> e)
|
||||||
{
|
|
||||||
MessageBox.Show(
|
|
||||||
$"An error occurred while starting Roblox\n\nDetails: {message}",
|
|
||||||
Program.ProjectName,
|
|
||||||
MessageBoxButtons.OK,
|
|
||||||
MessageBoxIcon.Error
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ShowSuccess(object sender, ChangeEventArgs<string> e)
|
|
||||||
{
|
{
|
||||||
MessageBox.Show(
|
MessageBox.Show(
|
||||||
e.Value,
|
e.Value,
|
||||||
@ -83,14 +65,36 @@ namespace Bloxstrap.Dialogs.BootstrapperStyles
|
|||||||
MessageBoxButtons.OK,
|
MessageBoxButtons.OK,
|
||||||
MessageBoxIcon.Information
|
MessageBoxIcon.Information
|
||||||
);
|
);
|
||||||
|
|
||||||
|
Program.Exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CloseDialog(object? sender, EventArgs e)
|
public virtual void ShowError(string message)
|
||||||
{
|
{
|
||||||
this.Close();
|
MessageBox.Show(
|
||||||
|
$"An error occurred while starting Roblox\n\nDetails: {message}",
|
||||||
|
Program.ProjectName,
|
||||||
|
MessageBoxButtons.OK,
|
||||||
|
MessageBoxIcon.Error
|
||||||
|
);
|
||||||
|
|
||||||
|
Program.Exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void PromptShutdown(object? sender, EventArgs e)
|
public virtual void CloseDialog(object? sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (this.InvokeRequired)
|
||||||
|
{
|
||||||
|
EventHandler handler = new(CloseDialog);
|
||||||
|
this.Invoke(handler, sender, e);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.Hide();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void PromptShutdown(object? sender, EventArgs e)
|
||||||
{
|
{
|
||||||
DialogResult result = MessageBox.Show(
|
DialogResult result = MessageBox.Show(
|
||||||
"Roblox is currently running, but needs to close. Would you like close Roblox now?",
|
"Roblox is currently running, but needs to close. Would you like close Roblox now?",
|
||||||
@ -103,60 +107,61 @@ namespace Bloxstrap.Dialogs.BootstrapperStyles
|
|||||||
Environment.Exit(0);
|
Environment.Exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void MessageChanged(object sender, ChangeEventArgs<string> e)
|
|
||||||
|
public void MessageChanged(object sender, ChangeEventArgs<string> e)
|
||||||
{
|
{
|
||||||
if (this.InvokeRequired)
|
if (this.InvokeRequired)
|
||||||
{
|
{
|
||||||
ChangeEventHandler<string> handler = new(MessageChanged);
|
ChangeEventHandler<string> handler = new(MessageChanged);
|
||||||
this.Message.Invoke(handler, sender, e);
|
this.Invoke(handler, sender, e);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this.Message.Text = e.Value;
|
Message = e.Value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ProgressBarValueChanged(object sender, ChangeEventArgs<int> e)
|
public void ProgressBarStyleChanged(object sender, ChangeEventArgs<ProgressBarStyle> e)
|
||||||
{
|
{
|
||||||
if (this.ProgressBar.InvokeRequired)
|
if (this.InvokeRequired)
|
||||||
{
|
|
||||||
ChangeEventHandler<int> handler = new(ProgressBarValueChanged);
|
|
||||||
this.ProgressBar.Invoke(handler, sender, e);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
this.ProgressBar.Value = e.Value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ProgressBarStyleChanged(object sender, ChangeEventArgs<ProgressBarStyle> e)
|
|
||||||
{
|
|
||||||
if (this.ProgressBar.InvokeRequired)
|
|
||||||
{
|
{
|
||||||
ChangeEventHandler<ProgressBarStyle> handler = new(this.ProgressBarStyleChanged);
|
ChangeEventHandler<ProgressBarStyle> handler = new(this.ProgressBarStyleChanged);
|
||||||
this.ProgressBar.Invoke(handler, sender, e);
|
this.Invoke(handler, sender, e);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this.ProgressBar.Style = e.Value;
|
ProgressStyle = e.Value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CancelEnabledChanged(object sender, ChangeEventArgs<bool> e)
|
public void ProgressBarValueChanged(object sender, ChangeEventArgs<int> e)
|
||||||
{
|
{
|
||||||
if (this.ButtonCancel.InvokeRequired)
|
if (this.InvokeRequired)
|
||||||
|
{
|
||||||
|
ChangeEventHandler<int> handler = new(ProgressBarValueChanged);
|
||||||
|
this.Invoke(handler, sender, e);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ProgressValue = e.Value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void CancelEnabledChanged(object sender, ChangeEventArgs<bool> e)
|
||||||
|
{
|
||||||
|
if (this.InvokeRequired)
|
||||||
{
|
{
|
||||||
ChangeEventHandler<bool> handler = new(CancelEnabledChanged);
|
ChangeEventHandler<bool> handler = new(CancelEnabledChanged);
|
||||||
this.ButtonCancel.Invoke(handler, sender, e);
|
this.Invoke(handler, sender, e);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this.ButtonCancel.Enabled = e.Value;
|
this.CancelEnabled = e.Value;
|
||||||
this.ButtonCancel.Visible = e.Value;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ButtonCancel_Click(object sender, EventArgs e)
|
|
||||||
|
public void ButtonCancel_Click(object? sender, EventArgs e)
|
||||||
{
|
{
|
||||||
if (Bootstrapper is null)
|
if (Bootstrapper is null)
|
||||||
this.Close();
|
this.Close();
|
27
Bloxstrap/Dialogs/BootstrapperStyles/IBootstrapperStyle.cs
Normal file
27
Bloxstrap/Dialogs/BootstrapperStyles/IBootstrapperStyle.cs
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
using Bloxstrap.Helpers.RSMM;
|
||||||
|
|
||||||
|
namespace Bloxstrap.Dialogs.BootstrapperStyles
|
||||||
|
{
|
||||||
|
interface IBootstrapperStyle
|
||||||
|
{
|
||||||
|
Bootstrapper? Bootstrapper { get; set; }
|
||||||
|
|
||||||
|
string Message { get; set; }
|
||||||
|
ProgressBarStyle ProgressStyle { get; set; }
|
||||||
|
int ProgressValue { get; set; }
|
||||||
|
bool CancelEnabled { get; set; }
|
||||||
|
|
||||||
|
void RunBootstrapper();
|
||||||
|
void ShowError(string message);
|
||||||
|
void ShowSuccess(object sender, ChangeEventArgs<string> e);
|
||||||
|
void CloseDialog(object? sender, EventArgs e);
|
||||||
|
void PromptShutdown(object? sender, EventArgs e);
|
||||||
|
|
||||||
|
void MessageChanged(object sender, ChangeEventArgs<string> e);
|
||||||
|
void ProgressBarValueChanged(object sender, ChangeEventArgs<int> e);
|
||||||
|
void ProgressBarStyleChanged(object sender, ChangeEventArgs<ProgressBarStyle> e);
|
||||||
|
void CancelEnabledChanged(object sender, ChangeEventArgs<bool> e);
|
||||||
|
|
||||||
|
void ButtonCancel_Click(object sender, EventArgs e);
|
||||||
|
}
|
||||||
|
}
|
93
Bloxstrap/Dialogs/BootstrapperStyles/LegacyDialog2009.Designer.cs
generated
Normal file
93
Bloxstrap/Dialogs/BootstrapperStyles/LegacyDialog2009.Designer.cs
generated
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
namespace Bloxstrap.Dialogs.BootstrapperStyles
|
||||||
|
{
|
||||||
|
partial class LegacyDialog2009
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Required designer variable.
|
||||||
|
/// </summary>
|
||||||
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Clean up any resources being used.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing && (components != null))
|
||||||
|
{
|
||||||
|
components.Dispose();
|
||||||
|
}
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Windows Form Designer generated code
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Required method for Designer support - do not modify
|
||||||
|
/// the contents of this method with the code editor.
|
||||||
|
/// </summary>
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
this.labelMessage = new System.Windows.Forms.Label();
|
||||||
|
this.ProgressBar = new System.Windows.Forms.ProgressBar();
|
||||||
|
this.buttonCancel = new System.Windows.Forms.Button();
|
||||||
|
this.SuspendLayout();
|
||||||
|
//
|
||||||
|
// labelMessage
|
||||||
|
//
|
||||||
|
this.labelMessage.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
||||||
|
this.labelMessage.Location = new System.Drawing.Point(12, 16);
|
||||||
|
this.labelMessage.Name = "labelMessage";
|
||||||
|
this.labelMessage.Size = new System.Drawing.Size(287, 17);
|
||||||
|
this.labelMessage.TabIndex = 0;
|
||||||
|
this.labelMessage.Text = "Please wait...";
|
||||||
|
//
|
||||||
|
// ProgressBar
|
||||||
|
//
|
||||||
|
this.ProgressBar.Location = new System.Drawing.Point(15, 47);
|
||||||
|
this.ProgressBar.MarqueeAnimationSpeed = 33;
|
||||||
|
this.ProgressBar.Name = "ProgressBar";
|
||||||
|
this.ProgressBar.Size = new System.Drawing.Size(281, 20);
|
||||||
|
this.ProgressBar.Style = System.Windows.Forms.ProgressBarStyle.Marquee;
|
||||||
|
this.ProgressBar.TabIndex = 1;
|
||||||
|
//
|
||||||
|
// buttonCancel
|
||||||
|
//
|
||||||
|
this.buttonCancel.Enabled = false;
|
||||||
|
this.buttonCancel.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
||||||
|
this.buttonCancel.Location = new System.Drawing.Point(221, 83);
|
||||||
|
this.buttonCancel.Name = "buttonCancel";
|
||||||
|
this.buttonCancel.Size = new System.Drawing.Size(75, 23);
|
||||||
|
this.buttonCancel.TabIndex = 3;
|
||||||
|
this.buttonCancel.Text = "Cancel";
|
||||||
|
this.buttonCancel.UseVisualStyleBackColor = true;
|
||||||
|
this.buttonCancel.Click += new System.EventHandler(this.ButtonCancel_Click);
|
||||||
|
//
|
||||||
|
// LegacyDialog2009
|
||||||
|
//
|
||||||
|
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F);
|
||||||
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
|
this.ClientSize = new System.Drawing.Size(311, 122);
|
||||||
|
this.Controls.Add(this.buttonCancel);
|
||||||
|
this.Controls.Add(this.ProgressBar);
|
||||||
|
this.Controls.Add(this.labelMessage);
|
||||||
|
this.Font = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
||||||
|
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
||||||
|
this.MaximizeBox = false;
|
||||||
|
this.MaximumSize = new System.Drawing.Size(327, 161);
|
||||||
|
this.MinimizeBox = false;
|
||||||
|
this.MinimumSize = new System.Drawing.Size(327, 161);
|
||||||
|
this.Name = "LegacyDialog2009";
|
||||||
|
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||||
|
this.Text = "LegacyDialog2009";
|
||||||
|
this.ResumeLayout(false);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private Label labelMessage;
|
||||||
|
private ProgressBar ProgressBar;
|
||||||
|
private Button buttonCancel;
|
||||||
|
}
|
||||||
|
}
|
41
Bloxstrap/Dialogs/BootstrapperStyles/LegacyDialog2009.cs
Normal file
41
Bloxstrap/Dialogs/BootstrapperStyles/LegacyDialog2009.cs
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
namespace Bloxstrap.Dialogs.BootstrapperStyles
|
||||||
|
{
|
||||||
|
// windows: https://youtu.be/VpduiruysuM?t=18
|
||||||
|
// mac: https://youtu.be/ncHhbcVDRgQ?t=63
|
||||||
|
|
||||||
|
public partial class LegacyDialog2009 : BootstrapperStyleForm
|
||||||
|
{
|
||||||
|
public override string Message
|
||||||
|
{
|
||||||
|
get => labelMessage.Text;
|
||||||
|
set => labelMessage.Text = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override ProgressBarStyle ProgressStyle
|
||||||
|
{
|
||||||
|
get => ProgressBar.Style;
|
||||||
|
set => ProgressBar.Style = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override int ProgressValue
|
||||||
|
{
|
||||||
|
get => ProgressBar.Value;
|
||||||
|
set => ProgressBar.Value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool CancelEnabled
|
||||||
|
{
|
||||||
|
get => this.buttonCancel.Enabled;
|
||||||
|
set => this.buttonCancel.Enabled = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public LegacyDialog2009(Bootstrapper? bootstrapper = null)
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
|
||||||
|
Bootstrapper = bootstrapper;
|
||||||
|
|
||||||
|
SetupDialog();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,6 +1,6 @@
|
|||||||
namespace Bloxstrap.Dialogs.BootstrapperStyles
|
namespace Bloxstrap.Dialogs.BootstrapperStyles
|
||||||
{
|
{
|
||||||
partial class LegacyDialog
|
partial class LegacyDialog2011
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Required designer variable.
|
/// Required designer variable.
|
||||||
@ -28,20 +28,20 @@
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private void InitializeComponent()
|
private void InitializeComponent()
|
||||||
{
|
{
|
||||||
this.Message = new System.Windows.Forms.Label();
|
this.labelMessage = new System.Windows.Forms.Label();
|
||||||
this.ProgressBar = new System.Windows.Forms.ProgressBar();
|
this.ProgressBar = new System.Windows.Forms.ProgressBar();
|
||||||
this.IconBox = new System.Windows.Forms.PictureBox();
|
this.IconBox = new System.Windows.Forms.PictureBox();
|
||||||
this.ButtonCancel = new System.Windows.Forms.Button();
|
this.buttonCancel = new System.Windows.Forms.Button();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.IconBox)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.IconBox)).BeginInit();
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
//
|
//
|
||||||
// Message
|
// labelMessage
|
||||||
//
|
//
|
||||||
this.Message.Location = new System.Drawing.Point(55, 23);
|
this.labelMessage.Location = new System.Drawing.Point(55, 23);
|
||||||
this.Message.Name = "Message";
|
this.labelMessage.Name = "labelMessage";
|
||||||
this.Message.Size = new System.Drawing.Size(287, 17);
|
this.labelMessage.Size = new System.Drawing.Size(287, 17);
|
||||||
this.Message.TabIndex = 0;
|
this.labelMessage.TabIndex = 0;
|
||||||
this.Message.Text = "Please wait...";
|
this.labelMessage.Text = "Please wait...";
|
||||||
//
|
//
|
||||||
// ProgressBar
|
// ProgressBar
|
||||||
//
|
//
|
||||||
@ -62,37 +62,37 @@
|
|||||||
this.IconBox.TabIndex = 2;
|
this.IconBox.TabIndex = 2;
|
||||||
this.IconBox.TabStop = false;
|
this.IconBox.TabStop = false;
|
||||||
//
|
//
|
||||||
// ButtonCancel
|
// buttonCancel
|
||||||
//
|
//
|
||||||
this.ButtonCancel.Enabled = false;
|
this.buttonCancel.Enabled = false;
|
||||||
this.ButtonCancel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
this.buttonCancel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
||||||
this.ButtonCancel.Location = new System.Drawing.Point(271, 83);
|
this.buttonCancel.Location = new System.Drawing.Point(271, 83);
|
||||||
this.ButtonCancel.Name = "ButtonCancel";
|
this.buttonCancel.Name = "buttonCancel";
|
||||||
this.ButtonCancel.Size = new System.Drawing.Size(75, 23);
|
this.buttonCancel.Size = new System.Drawing.Size(75, 23);
|
||||||
this.ButtonCancel.TabIndex = 3;
|
this.buttonCancel.TabIndex = 3;
|
||||||
this.ButtonCancel.Text = "Cancel";
|
this.buttonCancel.Text = "Cancel";
|
||||||
this.ButtonCancel.UseVisualStyleBackColor = true;
|
this.buttonCancel.UseVisualStyleBackColor = true;
|
||||||
this.ButtonCancel.Visible = false;
|
this.buttonCancel.Visible = false;
|
||||||
this.ButtonCancel.Click += new System.EventHandler(this.ButtonCancel_Click);
|
this.buttonCancel.Click += new System.EventHandler(this.ButtonCancel_Click);
|
||||||
//
|
//
|
||||||
// LegacyDialogStyle
|
// LegacyDialog
|
||||||
//
|
//
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F);
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
this.ClientSize = new System.Drawing.Size(362, 131);
|
this.ClientSize = new System.Drawing.Size(362, 131);
|
||||||
this.Controls.Add(this.ButtonCancel);
|
this.Controls.Add(this.buttonCancel);
|
||||||
this.Controls.Add(this.IconBox);
|
this.Controls.Add(this.IconBox);
|
||||||
this.Controls.Add(this.ProgressBar);
|
this.Controls.Add(this.ProgressBar);
|
||||||
this.Controls.Add(this.Message);
|
this.Controls.Add(this.labelMessage);
|
||||||
this.Font = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
this.Font = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
||||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
||||||
this.MaximizeBox = false;
|
this.MaximizeBox = false;
|
||||||
this.MaximumSize = new System.Drawing.Size(378, 170);
|
this.MaximumSize = new System.Drawing.Size(378, 170);
|
||||||
this.MinimizeBox = false;
|
this.MinimizeBox = false;
|
||||||
this.MinimumSize = new System.Drawing.Size(378, 170);
|
this.MinimumSize = new System.Drawing.Size(378, 170);
|
||||||
this.Name = "LegacyDialogStyle";
|
this.Name = "LegacyDialog2011";
|
||||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||||
this.Text = "LegacyDialogStyle";
|
this.Text = "LegacyDialog2011";
|
||||||
((System.ComponentModel.ISupportInitialize)(this.IconBox)).EndInit();
|
((System.ComponentModel.ISupportInitialize)(this.IconBox)).EndInit();
|
||||||
this.ResumeLayout(false);
|
this.ResumeLayout(false);
|
||||||
|
|
||||||
@ -100,9 +100,9 @@
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
private Label Message;
|
private Label labelMessage;
|
||||||
private ProgressBar ProgressBar;
|
private ProgressBar ProgressBar;
|
||||||
private PictureBox IconBox;
|
private PictureBox IconBox;
|
||||||
private Button ButtonCancel;
|
private Button buttonCancel;
|
||||||
}
|
}
|
||||||
}
|
}
|
45
Bloxstrap/Dialogs/BootstrapperStyles/LegacyDialog2011.cs
Normal file
45
Bloxstrap/Dialogs/BootstrapperStyles/LegacyDialog2011.cs
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
using Bloxstrap.Helpers;
|
||||||
|
|
||||||
|
namespace Bloxstrap.Dialogs.BootstrapperStyles
|
||||||
|
{
|
||||||
|
// https://youtu.be/3K9oCEMHj2s?t=35
|
||||||
|
|
||||||
|
public partial class LegacyDialog2011 : BootstrapperStyleForm
|
||||||
|
{
|
||||||
|
public override string Message
|
||||||
|
{
|
||||||
|
get => labelMessage.Text;
|
||||||
|
set => labelMessage.Text = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override ProgressBarStyle ProgressStyle
|
||||||
|
{
|
||||||
|
get => ProgressBar.Style;
|
||||||
|
set => ProgressBar.Style = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override int ProgressValue
|
||||||
|
{
|
||||||
|
get => ProgressBar.Value;
|
||||||
|
set => ProgressBar.Value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool CancelEnabled
|
||||||
|
{
|
||||||
|
get => this.buttonCancel.Enabled;
|
||||||
|
set => this.buttonCancel.Enabled = this.buttonCancel.Visible = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public LegacyDialog2011(Bootstrapper? bootstrapper = null)
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
|
||||||
|
Bootstrapper = bootstrapper;
|
||||||
|
|
||||||
|
// have to convert icon -> bitmap since winforms scaling is poop
|
||||||
|
this.IconBox.Image = IconManager.GetIconResource().ToBitmap();
|
||||||
|
|
||||||
|
SetupDialog();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
60
Bloxstrap/Dialogs/BootstrapperStyles/LegacyDialog2011.resx
Normal file
60
Bloxstrap/Dialogs/BootstrapperStyles/LegacyDialog2011.resx
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
<root>
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
</root>
|
@ -29,12 +29,12 @@
|
|||||||
private void InitializeComponent()
|
private void InitializeComponent()
|
||||||
{
|
{
|
||||||
this.ProgressBar = new System.Windows.Forms.ProgressBar();
|
this.ProgressBar = new System.Windows.Forms.ProgressBar();
|
||||||
this.Message = new System.Windows.Forms.Label();
|
this.labelMessage = new System.Windows.Forms.Label();
|
||||||
this.IconBox = new System.Windows.Forms.PictureBox();
|
this.IconBox = new System.Windows.Forms.PictureBox();
|
||||||
this.ButtonCancel = new System.Windows.Forms.PictureBox();
|
this.buttonCancel = new System.Windows.Forms.PictureBox();
|
||||||
this.panel1 = new System.Windows.Forms.Panel();
|
this.panel1 = new System.Windows.Forms.Panel();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.IconBox)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.IconBox)).BeginInit();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.ButtonCancel)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.buttonCancel)).BeginInit();
|
||||||
this.panel1.SuspendLayout();
|
this.panel1.SuspendLayout();
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
//
|
//
|
||||||
@ -48,16 +48,16 @@
|
|||||||
this.ProgressBar.Style = System.Windows.Forms.ProgressBarStyle.Marquee;
|
this.ProgressBar.Style = System.Windows.Forms.ProgressBarStyle.Marquee;
|
||||||
this.ProgressBar.TabIndex = 0;
|
this.ProgressBar.TabIndex = 0;
|
||||||
//
|
//
|
||||||
// Message
|
// labelMessage
|
||||||
//
|
//
|
||||||
this.Message.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
this.labelMessage.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
||||||
this.Message.Location = new System.Drawing.Point(29, 199);
|
this.labelMessage.Location = new System.Drawing.Point(29, 199);
|
||||||
this.Message.Name = "Message";
|
this.labelMessage.Name = "labelMessage";
|
||||||
this.Message.Size = new System.Drawing.Size(460, 18);
|
this.labelMessage.Size = new System.Drawing.Size(460, 18);
|
||||||
this.Message.TabIndex = 1;
|
this.labelMessage.TabIndex = 1;
|
||||||
this.Message.Text = "Please wait...";
|
this.labelMessage.Text = "Please wait...";
|
||||||
this.Message.TextAlign = System.Drawing.ContentAlignment.TopCenter;
|
this.labelMessage.TextAlign = System.Drawing.ContentAlignment.TopCenter;
|
||||||
this.Message.UseMnemonic = false;
|
this.labelMessage.UseMnemonic = false;
|
||||||
//
|
//
|
||||||
// IconBox
|
// IconBox
|
||||||
//
|
//
|
||||||
@ -69,33 +69,33 @@
|
|||||||
this.IconBox.TabIndex = 2;
|
this.IconBox.TabIndex = 2;
|
||||||
this.IconBox.TabStop = false;
|
this.IconBox.TabStop = false;
|
||||||
//
|
//
|
||||||
// ButtonCancel
|
// buttonCancel
|
||||||
//
|
//
|
||||||
this.ButtonCancel.Enabled = false;
|
this.buttonCancel.Enabled = false;
|
||||||
this.ButtonCancel.Image = global::Bloxstrap.Properties.Resources.CancelButton;
|
this.buttonCancel.Image = global::Bloxstrap.Properties.Resources.CancelButton;
|
||||||
this.ButtonCancel.Location = new System.Drawing.Point(194, 264);
|
this.buttonCancel.Location = new System.Drawing.Point(194, 264);
|
||||||
this.ButtonCancel.Name = "ButtonCancel";
|
this.buttonCancel.Name = "buttonCancel";
|
||||||
this.ButtonCancel.Size = new System.Drawing.Size(130, 44);
|
this.buttonCancel.Size = new System.Drawing.Size(130, 44);
|
||||||
this.ButtonCancel.TabIndex = 3;
|
this.buttonCancel.TabIndex = 3;
|
||||||
this.ButtonCancel.TabStop = false;
|
this.buttonCancel.TabStop = false;
|
||||||
this.ButtonCancel.Visible = false;
|
this.buttonCancel.Visible = false;
|
||||||
this.ButtonCancel.Click += new System.EventHandler(this.ButtonCancel_Click);
|
this.buttonCancel.Click += new System.EventHandler(this.ButtonCancel_Click);
|
||||||
this.ButtonCancel.MouseEnter += new System.EventHandler(this.ButtonCancel_MouseEnter);
|
this.buttonCancel.MouseEnter += new System.EventHandler(this.ButtonCancel_MouseEnter);
|
||||||
this.ButtonCancel.MouseLeave += new System.EventHandler(this.ButtonCancel_MouseLeave);
|
this.buttonCancel.MouseLeave += new System.EventHandler(this.ButtonCancel_MouseLeave);
|
||||||
//
|
//
|
||||||
// panel1
|
// panel1
|
||||||
//
|
//
|
||||||
this.panel1.BackColor = System.Drawing.SystemColors.Window;
|
this.panel1.BackColor = System.Drawing.SystemColors.Window;
|
||||||
this.panel1.Controls.Add(this.Message);
|
this.panel1.Controls.Add(this.labelMessage);
|
||||||
this.panel1.Controls.Add(this.IconBox);
|
this.panel1.Controls.Add(this.IconBox);
|
||||||
this.panel1.Controls.Add(this.ButtonCancel);
|
this.panel1.Controls.Add(this.buttonCancel);
|
||||||
this.panel1.Controls.Add(this.ProgressBar);
|
this.panel1.Controls.Add(this.ProgressBar);
|
||||||
this.panel1.Location = new System.Drawing.Point(1, 1);
|
this.panel1.Location = new System.Drawing.Point(1, 1);
|
||||||
this.panel1.Name = "panel1";
|
this.panel1.Name = "panel1";
|
||||||
this.panel1.Size = new System.Drawing.Size(518, 318);
|
this.panel1.Size = new System.Drawing.Size(518, 318);
|
||||||
this.panel1.TabIndex = 4;
|
this.panel1.TabIndex = 4;
|
||||||
//
|
//
|
||||||
// ProgressDialogStyle
|
// ProgressDialog
|
||||||
//
|
//
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
@ -105,11 +105,11 @@
|
|||||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
|
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
|
||||||
this.MaximumSize = new System.Drawing.Size(520, 320);
|
this.MaximumSize = new System.Drawing.Size(520, 320);
|
||||||
this.MinimumSize = new System.Drawing.Size(520, 320);
|
this.MinimumSize = new System.Drawing.Size(520, 320);
|
||||||
this.Name = "ProgressDialogStyle";
|
this.Name = "ProgressDialog";
|
||||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||||
this.Text = "ProgressDialogStyle";
|
this.Text = "ProgressDialog";
|
||||||
((System.ComponentModel.ISupportInitialize)(this.IconBox)).EndInit();
|
((System.ComponentModel.ISupportInitialize)(this.IconBox)).EndInit();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.ButtonCancel)).EndInit();
|
((System.ComponentModel.ISupportInitialize)(this.buttonCancel)).EndInit();
|
||||||
this.panel1.ResumeLayout(false);
|
this.panel1.ResumeLayout(false);
|
||||||
this.ResumeLayout(false);
|
this.ResumeLayout(false);
|
||||||
|
|
||||||
@ -118,9 +118,9 @@
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
private ProgressBar ProgressBar;
|
private ProgressBar ProgressBar;
|
||||||
private Label Message;
|
private Label labelMessage;
|
||||||
private PictureBox IconBox;
|
private PictureBox IconBox;
|
||||||
private PictureBox ButtonCancel;
|
private PictureBox buttonCancel;
|
||||||
private Panel panel1;
|
private Panel panel1;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,15 +1,34 @@
|
|||||||
using System.Diagnostics;
|
using Bloxstrap.Helpers;
|
||||||
|
|
||||||
using Bloxstrap.Helpers;
|
|
||||||
using Bloxstrap.Helpers.RSMM;
|
|
||||||
|
|
||||||
namespace Bloxstrap.Dialogs.BootstrapperStyles
|
namespace Bloxstrap.Dialogs.BootstrapperStyles
|
||||||
{
|
{
|
||||||
// TODO - universal implementation for winforms-based styles? (to reduce duplicate code)
|
// basically just the modern dialog
|
||||||
|
|
||||||
public partial class ProgressDialog : Form
|
public partial class ProgressDialog : BootstrapperStyleForm
|
||||||
{
|
{
|
||||||
private readonly Bootstrapper? Bootstrapper;
|
public override string Message
|
||||||
|
{
|
||||||
|
get => labelMessage.Text;
|
||||||
|
set => labelMessage.Text = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override ProgressBarStyle ProgressStyle
|
||||||
|
{
|
||||||
|
get => ProgressBar.Style;
|
||||||
|
set => ProgressBar.Style = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override int ProgressValue
|
||||||
|
{
|
||||||
|
get => ProgressBar.Value;
|
||||||
|
set => ProgressBar.Value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool CancelEnabled
|
||||||
|
{
|
||||||
|
get => this.buttonCancel.Enabled;
|
||||||
|
set => this.buttonCancel.Enabled = this.buttonCancel.Visible = value;
|
||||||
|
}
|
||||||
|
|
||||||
public ProgressDialog(Bootstrapper? bootstrapper = null)
|
public ProgressDialog(Bootstrapper? bootstrapper = null)
|
||||||
{
|
{
|
||||||
@ -17,156 +36,19 @@ namespace Bloxstrap.Dialogs.BootstrapperStyles
|
|||||||
|
|
||||||
Bootstrapper = bootstrapper;
|
Bootstrapper = bootstrapper;
|
||||||
|
|
||||||
this.Text = Program.ProjectName;
|
|
||||||
this.Icon = IconManager.GetIconResource();
|
|
||||||
this.IconBox.BackgroundImage = IconManager.GetBitmapResource();
|
this.IconBox.BackgroundImage = IconManager.GetBitmapResource();
|
||||||
|
|
||||||
if (Bootstrapper is null)
|
SetupDialog();
|
||||||
{
|
|
||||||
this.Message.Text = "Click the Cancel button to return to preferences";
|
|
||||||
this.ButtonCancel.Enabled = true;
|
|
||||||
this.ButtonCancel.Visible = true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Bootstrapper.CloseDialogEvent += new EventHandler(CloseDialog);
|
|
||||||
Bootstrapper.PromptShutdownEvent += new EventHandler(PromptShutdown);
|
|
||||||
Bootstrapper.ShowSuccessEvent += new ChangeEventHandler<string>(ShowSuccess);
|
|
||||||
Bootstrapper.MessageChanged += new ChangeEventHandler<string>(MessageChanged);
|
|
||||||
Bootstrapper.ProgressBarValueChanged += new ChangeEventHandler<int>(ProgressBarValueChanged);
|
|
||||||
Bootstrapper.ProgressBarStyleChanged += new ChangeEventHandler<ProgressBarStyle>(ProgressBarStyleChanged);
|
|
||||||
Bootstrapper.CancelEnabledChanged += new ChangeEventHandler<bool>(CancelEnabledChanged);
|
|
||||||
|
|
||||||
Task.Run(() => RunBootstrapper());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public async void RunBootstrapper()
|
|
||||||
{
|
|
||||||
if (Bootstrapper is null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
await Bootstrapper.Run();
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
// string message = String.Format("{0}: {1}", ex.GetType(), ex.Message);
|
|
||||||
string message = ex.ToString();
|
|
||||||
ShowError(message);
|
|
||||||
|
|
||||||
Program.Exit();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ShowError(string message)
|
|
||||||
{
|
|
||||||
MessageBox.Show(
|
|
||||||
$"An error occurred while starting Roblox\n\nDetails: {message}",
|
|
||||||
Program.ProjectName,
|
|
||||||
MessageBoxButtons.OK,
|
|
||||||
MessageBoxIcon.Error
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ShowSuccess(object sender, ChangeEventArgs<string> e)
|
|
||||||
{
|
|
||||||
MessageBox.Show(
|
|
||||||
e.Value,
|
|
||||||
Program.ProjectName,
|
|
||||||
MessageBoxButtons.OK,
|
|
||||||
MessageBoxIcon.Information
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void CloseDialog(object? sender, EventArgs e)
|
|
||||||
{
|
|
||||||
this.Hide();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void PromptShutdown(object? sender, EventArgs e)
|
|
||||||
{
|
|
||||||
DialogResult result = MessageBox.Show(
|
|
||||||
"Roblox is currently running, but needs to close. Would you like close Roblox now?",
|
|
||||||
Program.ProjectName,
|
|
||||||
MessageBoxButtons.OKCancel,
|
|
||||||
MessageBoxIcon.Information
|
|
||||||
);
|
|
||||||
|
|
||||||
if (result != DialogResult.OK)
|
|
||||||
Environment.Exit(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void MessageChanged(object sender, ChangeEventArgs<string> e)
|
|
||||||
{
|
|
||||||
if (this.InvokeRequired)
|
|
||||||
{
|
|
||||||
ChangeEventHandler<string> handler = new(MessageChanged);
|
|
||||||
this.Message.Invoke(handler, sender, e);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
this.Message.Text = e.Value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ProgressBarValueChanged(object sender, ChangeEventArgs<int> e)
|
|
||||||
{
|
|
||||||
if (this.ProgressBar.InvokeRequired)
|
|
||||||
{
|
|
||||||
ChangeEventHandler<int> handler = new(ProgressBarValueChanged);
|
|
||||||
this.ProgressBar.Invoke(handler, sender, e);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
this.ProgressBar.Value = e.Value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ProgressBarStyleChanged(object sender, ChangeEventArgs<ProgressBarStyle> e)
|
|
||||||
{
|
|
||||||
if (this.ProgressBar.InvokeRequired)
|
|
||||||
{
|
|
||||||
ChangeEventHandler<ProgressBarStyle> handler = new(ProgressBarStyleChanged);
|
|
||||||
this.ProgressBar.Invoke(handler, sender, e);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
this.ProgressBar.Style = e.Value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void CancelEnabledChanged(object sender, ChangeEventArgs<bool> e)
|
|
||||||
{
|
|
||||||
if (this.ButtonCancel.InvokeRequired)
|
|
||||||
{
|
|
||||||
ChangeEventHandler<bool> handler = new(CancelEnabledChanged);
|
|
||||||
this.ButtonCancel.Invoke(handler, sender, e);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
this.ButtonCancel.Enabled = e.Value;
|
|
||||||
this.ButtonCancel.Visible = e.Value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ButtonCancel_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (Bootstrapper is null)
|
|
||||||
this.Close();
|
|
||||||
else
|
|
||||||
Task.Run(() => Bootstrapper.CancelButtonClicked());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ButtonCancel_MouseEnter(object sender, EventArgs e)
|
private void ButtonCancel_MouseEnter(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
this.ButtonCancel.Image = Properties.Resources.CancelButtonHover;
|
this.buttonCancel.Image = Properties.Resources.CancelButtonHover;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ButtonCancel_MouseLeave(object sender, EventArgs e)
|
private void ButtonCancel_MouseLeave(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
this.ButtonCancel.Image = Properties.Resources.CancelButton;
|
this.buttonCancel.Image = Properties.Resources.CancelButton;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
127
Bloxstrap/Dialogs/BootstrapperStyles/ProgressDialogDark.Designer.cs
generated
Normal file
127
Bloxstrap/Dialogs/BootstrapperStyles/ProgressDialogDark.Designer.cs
generated
Normal file
@ -0,0 +1,127 @@
|
|||||||
|
namespace Bloxstrap.Dialogs.BootstrapperStyles
|
||||||
|
{
|
||||||
|
partial class ProgressDialogDark
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Required designer variable.
|
||||||
|
/// </summary>
|
||||||
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Clean up any resources being used.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing && (components != null))
|
||||||
|
{
|
||||||
|
components.Dispose();
|
||||||
|
}
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Windows Form Designer generated code
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Required method for Designer support - do not modify
|
||||||
|
/// the contents of this method with the code editor.
|
||||||
|
/// </summary>
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
this.ProgressBar = new System.Windows.Forms.ProgressBar();
|
||||||
|
this.labelMessage = new System.Windows.Forms.Label();
|
||||||
|
this.IconBox = new System.Windows.Forms.PictureBox();
|
||||||
|
this.buttonCancel = new System.Windows.Forms.PictureBox();
|
||||||
|
this.panel1 = new System.Windows.Forms.Panel();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.IconBox)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.buttonCancel)).BeginInit();
|
||||||
|
this.panel1.SuspendLayout();
|
||||||
|
this.SuspendLayout();
|
||||||
|
//
|
||||||
|
// ProgressBar
|
||||||
|
//
|
||||||
|
this.ProgressBar.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.ProgressBar.Location = new System.Drawing.Point(29, 241);
|
||||||
|
this.ProgressBar.MarqueeAnimationSpeed = 20;
|
||||||
|
this.ProgressBar.Name = "ProgressBar";
|
||||||
|
this.ProgressBar.Size = new System.Drawing.Size(460, 20);
|
||||||
|
this.ProgressBar.Style = System.Windows.Forms.ProgressBarStyle.Marquee;
|
||||||
|
this.ProgressBar.TabIndex = 0;
|
||||||
|
//
|
||||||
|
// labelMessage
|
||||||
|
//
|
||||||
|
this.labelMessage.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
||||||
|
this.labelMessage.ForeColor = System.Drawing.SystemColors.Window;
|
||||||
|
this.labelMessage.Location = new System.Drawing.Point(29, 199);
|
||||||
|
this.labelMessage.Name = "labelMessage";
|
||||||
|
this.labelMessage.Size = new System.Drawing.Size(460, 18);
|
||||||
|
this.labelMessage.TabIndex = 1;
|
||||||
|
this.labelMessage.Text = "Please wait...";
|
||||||
|
this.labelMessage.TextAlign = System.Drawing.ContentAlignment.TopCenter;
|
||||||
|
this.labelMessage.UseMnemonic = false;
|
||||||
|
//
|
||||||
|
// IconBox
|
||||||
|
//
|
||||||
|
this.IconBox.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
|
||||||
|
this.IconBox.ImageLocation = "";
|
||||||
|
this.IconBox.Location = new System.Drawing.Point(212, 66);
|
||||||
|
this.IconBox.Name = "IconBox";
|
||||||
|
this.IconBox.Size = new System.Drawing.Size(92, 92);
|
||||||
|
this.IconBox.TabIndex = 2;
|
||||||
|
this.IconBox.TabStop = false;
|
||||||
|
//
|
||||||
|
// buttonCancel
|
||||||
|
//
|
||||||
|
this.buttonCancel.Enabled = false;
|
||||||
|
this.buttonCancel.Image = global::Bloxstrap.Properties.Resources.DarkCancelButton;
|
||||||
|
this.buttonCancel.Location = new System.Drawing.Point(194, 264);
|
||||||
|
this.buttonCancel.Name = "buttonCancel";
|
||||||
|
this.buttonCancel.Size = new System.Drawing.Size(130, 44);
|
||||||
|
this.buttonCancel.TabIndex = 3;
|
||||||
|
this.buttonCancel.TabStop = false;
|
||||||
|
this.buttonCancel.Visible = false;
|
||||||
|
this.buttonCancel.Click += new System.EventHandler(this.ButtonCancel_Click);
|
||||||
|
this.buttonCancel.MouseEnter += new System.EventHandler(this.ButtonCancel_MouseEnter);
|
||||||
|
this.buttonCancel.MouseLeave += new System.EventHandler(this.ButtonCancel_MouseLeave);
|
||||||
|
//
|
||||||
|
// panel1
|
||||||
|
//
|
||||||
|
this.panel1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(35)))), ((int)(((byte)(37)))), ((int)(((byte)(39)))));
|
||||||
|
this.panel1.Controls.Add(this.labelMessage);
|
||||||
|
this.panel1.Controls.Add(this.IconBox);
|
||||||
|
this.panel1.Controls.Add(this.buttonCancel);
|
||||||
|
this.panel1.Controls.Add(this.ProgressBar);
|
||||||
|
this.panel1.Location = new System.Drawing.Point(1, 1);
|
||||||
|
this.panel1.Name = "panel1";
|
||||||
|
this.panel1.Size = new System.Drawing.Size(518, 318);
|
||||||
|
this.panel1.TabIndex = 4;
|
||||||
|
//
|
||||||
|
// ProgressDialogDark
|
||||||
|
//
|
||||||
|
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
|
||||||
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
|
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(27)))), ((int)(((byte)(29)))));
|
||||||
|
this.ClientSize = new System.Drawing.Size(520, 320);
|
||||||
|
this.Controls.Add(this.panel1);
|
||||||
|
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
|
||||||
|
this.MaximumSize = new System.Drawing.Size(520, 320);
|
||||||
|
this.MinimumSize = new System.Drawing.Size(520, 320);
|
||||||
|
this.Name = "ProgressDialogDark";
|
||||||
|
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||||
|
this.Text = "ProgressDialog";
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.IconBox)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.buttonCancel)).EndInit();
|
||||||
|
this.panel1.ResumeLayout(false);
|
||||||
|
this.ResumeLayout(false);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private ProgressBar ProgressBar;
|
||||||
|
private Label labelMessage;
|
||||||
|
private PictureBox IconBox;
|
||||||
|
private PictureBox buttonCancel;
|
||||||
|
private Panel panel1;
|
||||||
|
}
|
||||||
|
}
|
54
Bloxstrap/Dialogs/BootstrapperStyles/ProgressDialogDark.cs
Normal file
54
Bloxstrap/Dialogs/BootstrapperStyles/ProgressDialogDark.cs
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
using Bloxstrap.Helpers;
|
||||||
|
|
||||||
|
namespace Bloxstrap.Dialogs.BootstrapperStyles
|
||||||
|
{
|
||||||
|
// basically just the modern dialog
|
||||||
|
|
||||||
|
public partial class ProgressDialogDark : BootstrapperStyleForm
|
||||||
|
{
|
||||||
|
public override string Message
|
||||||
|
{
|
||||||
|
get => labelMessage.Text;
|
||||||
|
set => labelMessage.Text = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override ProgressBarStyle ProgressStyle
|
||||||
|
{
|
||||||
|
get => ProgressBar.Style;
|
||||||
|
set => ProgressBar.Style = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override int ProgressValue
|
||||||
|
{
|
||||||
|
get => ProgressBar.Value;
|
||||||
|
set => ProgressBar.Value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool CancelEnabled
|
||||||
|
{
|
||||||
|
get => this.buttonCancel.Enabled;
|
||||||
|
set => this.buttonCancel.Enabled = this.buttonCancel.Visible = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ProgressDialogDark(Bootstrapper? bootstrapper = null)
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
|
||||||
|
Bootstrapper = bootstrapper;
|
||||||
|
|
||||||
|
this.IconBox.BackgroundImage = IconManager.GetBitmapResource();
|
||||||
|
|
||||||
|
SetupDialog();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ButtonCancel_MouseEnter(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
this.buttonCancel.Image = Properties.Resources.DarkCancelButtonHover;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ButtonCancel_MouseLeave(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
this.buttonCancel.Image = Properties.Resources.DarkCancelButton;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
60
Bloxstrap/Dialogs/BootstrapperStyles/ProgressDialogDark.resx
Normal file
60
Bloxstrap/Dialogs/BootstrapperStyles/ProgressDialogDark.resx
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
<root>
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
</root>
|
49
Bloxstrap/Dialogs/BootstrapperStyles/VistaDialog.Designer.cs
generated
Normal file
49
Bloxstrap/Dialogs/BootstrapperStyles/VistaDialog.Designer.cs
generated
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
namespace Bloxstrap.Dialogs.BootstrapperStyles
|
||||||
|
{
|
||||||
|
partial class VistaDialog
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Required designer variable.
|
||||||
|
/// </summary>
|
||||||
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Clean up any resources being used.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing && (components != null))
|
||||||
|
{
|
||||||
|
components.Dispose();
|
||||||
|
}
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Windows Form Designer generated code
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Required method for Designer support - do not modify
|
||||||
|
/// the contents of this method with the code editor.
|
||||||
|
/// </summary>
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
this.SuspendLayout();
|
||||||
|
//
|
||||||
|
// TestDialog
|
||||||
|
//
|
||||||
|
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
|
||||||
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
|
this.ClientSize = new System.Drawing.Size(0, 0);
|
||||||
|
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
|
||||||
|
this.Name = "VistaDialog";
|
||||||
|
this.ShowInTaskbar = false;
|
||||||
|
this.Text = "VistaDialog";
|
||||||
|
this.Load += new System.EventHandler(this.TestDialog_Load);
|
||||||
|
this.ResumeLayout(false);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
@ -3,34 +3,71 @@ using Bloxstrap.Helpers.RSMM;
|
|||||||
|
|
||||||
namespace Bloxstrap.Dialogs.BootstrapperStyles
|
namespace Bloxstrap.Dialogs.BootstrapperStyles
|
||||||
{
|
{
|
||||||
// example: https://youtu.be/h0_AL95Sc3o?t=48
|
// https://youtu.be/h0_AL95Sc3o?t=48
|
||||||
|
|
||||||
// this currently doesn't work because c# is stupid
|
// a bit hacky, but this is actually a hidden form
|
||||||
// technically, task dialogs are treated as winforms controls, but they don't classify as winforms controls at all
|
// since taskdialog is part of winforms, it can't really be properly used without a form
|
||||||
// all winforms controls have the ability to be invoked from another thread, but task dialogs don't
|
// for example, cross-threaded calls to ui controls can't really be done outside of a form
|
||||||
// so we're just kind of stuck with this not working in multithreaded use
|
|
||||||
// (unless we want the bootstrapper to freeze during package extraction)
|
|
||||||
|
|
||||||
// for now, just stick to legacydialog and progressdialog
|
public partial class VistaDialog : BootstrapperStyleForm
|
||||||
|
|
||||||
public class VistaDialog
|
|
||||||
{
|
{
|
||||||
private readonly Bootstrapper Bootstrapper;
|
|
||||||
private TaskDialogPage Dialog;
|
private TaskDialogPage Dialog;
|
||||||
|
|
||||||
public VistaDialog(Bootstrapper bootstrapper)
|
public override string Message
|
||||||
{
|
{
|
||||||
|
get => Dialog.Heading ?? "";
|
||||||
|
set => Dialog.Heading = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override ProgressBarStyle ProgressStyle
|
||||||
|
{
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (Dialog.ProgressBar is null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
switch (value)
|
||||||
|
{
|
||||||
|
case ProgressBarStyle.Continuous:
|
||||||
|
case ProgressBarStyle.Blocks:
|
||||||
|
Dialog.ProgressBar.State = TaskDialogProgressBarState.Normal;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ProgressBarStyle.Marquee:
|
||||||
|
Dialog.ProgressBar.State = TaskDialogProgressBarState.Marquee;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override int ProgressValue
|
||||||
|
{
|
||||||
|
get => Dialog.ProgressBar is null ? 0 : Dialog.ProgressBar.Value;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (Dialog.ProgressBar is null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
Dialog.ProgressBar.Value = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool CancelEnabled
|
||||||
|
{
|
||||||
|
get => Dialog.Buttons[0].Enabled;
|
||||||
|
set => Dialog.Buttons[0].Enabled = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public VistaDialog(Bootstrapper? bootstrapper = null)
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
|
||||||
Bootstrapper = bootstrapper;
|
Bootstrapper = bootstrapper;
|
||||||
Bootstrapper.ShowSuccessEvent += new ChangeEventHandler<string>(ShowSuccess);
|
|
||||||
Bootstrapper.MessageChanged += new ChangeEventHandler<string>(MessageChanged);
|
|
||||||
Bootstrapper.ProgressBarValueChanged += new ChangeEventHandler<int>(ProgressBarValueChanged);
|
|
||||||
Bootstrapper.ProgressBarStyleChanged += new ChangeEventHandler<ProgressBarStyle>(ProgressBarStyleChanged);
|
|
||||||
|
|
||||||
Dialog = new TaskDialogPage()
|
Dialog = new TaskDialogPage()
|
||||||
{
|
{
|
||||||
Icon = new TaskDialogIcon(IconManager.GetIconResource()),
|
Icon = new TaskDialogIcon(IconManager.GetIconResource()),
|
||||||
Caption = Program.ProjectName,
|
Caption = Program.ProjectName,
|
||||||
Heading = "Please wait...",
|
|
||||||
|
|
||||||
Buttons = { TaskDialogButton.Cancel },
|
Buttons = { TaskDialogButton.Cancel },
|
||||||
ProgressBar = new TaskDialogProgressBar()
|
ProgressBar = new TaskDialogProgressBar()
|
||||||
@ -39,27 +76,51 @@ namespace Bloxstrap.Dialogs.BootstrapperStyles
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
Task.Run(() => RunBootstrapper());
|
Message = "Please wait...";
|
||||||
TaskDialog.ShowDialog(Dialog);
|
CancelEnabled = false;
|
||||||
|
|
||||||
|
Dialog.Buttons[0].Click += (sender, e) => ButtonCancel_Click(sender, e);
|
||||||
|
|
||||||
|
SetupDialog();
|
||||||
}
|
}
|
||||||
|
|
||||||
public async void RunBootstrapper()
|
public override void ShowSuccess(object sender, ChangeEventArgs<string> e)
|
||||||
{
|
{
|
||||||
try
|
if (this.InvokeRequired)
|
||||||
{
|
{
|
||||||
await Bootstrapper.Run();
|
ChangeEventHandler<string> handler = new(ShowSuccess);
|
||||||
|
this.Invoke(handler, sender, e);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
else
|
||||||
{
|
{
|
||||||
// string message = String.Format("{0}: {1}", ex.GetType(), ex.Message);
|
TaskDialogPage successDialog = new()
|
||||||
string message = ex.ToString();
|
{
|
||||||
ShowError(message);
|
Icon = TaskDialogIcon.ShieldSuccessGreenBar,
|
||||||
|
Caption = Program.ProjectName,
|
||||||
|
Heading = e.Value,
|
||||||
|
Buttons = { TaskDialogButton.OK }
|
||||||
|
};
|
||||||
|
|
||||||
Program.Exit();
|
successDialog.Buttons[0].Click += (sender, e) => Program.Exit();
|
||||||
|
|
||||||
|
Dialog.Navigate(successDialog);
|
||||||
|
Dialog = successDialog;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ShowError(string message)
|
private void InvokeShowError(object sender, ChangeEventArgs<string> e)
|
||||||
|
{
|
||||||
|
ShowError(e.Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void ShowError(string message)
|
||||||
|
{
|
||||||
|
if (this.InvokeRequired)
|
||||||
|
{
|
||||||
|
ChangeEventHandler<string> handler = new(InvokeShowError);
|
||||||
|
this.Invoke(handler, this, new ChangeEventArgs<string>(message));
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
TaskDialogPage errorDialog = new()
|
TaskDialogPage errorDialog = new()
|
||||||
{
|
{
|
||||||
@ -76,55 +137,34 @@ namespace Bloxstrap.Dialogs.BootstrapperStyles
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
errorDialog.Buttons[0].Click += (sender, e) => Program.Exit();
|
||||||
|
|
||||||
Dialog.Navigate(errorDialog);
|
Dialog.Navigate(errorDialog);
|
||||||
Dialog = errorDialog;
|
Dialog = errorDialog;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ShowSuccess(object sender, ChangeEventArgs<string> e)
|
|
||||||
{
|
|
||||||
TaskDialogPage successDialog = new()
|
|
||||||
{
|
|
||||||
Icon = TaskDialogIcon.ShieldSuccessGreenBar,
|
|
||||||
Caption = Program.ProjectName,
|
|
||||||
Heading = e.Value
|
|
||||||
};
|
|
||||||
|
|
||||||
Dialog.Navigate(successDialog);
|
|
||||||
Dialog = successDialog;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void MessageChanged(object sender, ChangeEventArgs<string> e)
|
public override void CloseDialog(object? sender, EventArgs e)
|
||||||
{
|
{
|
||||||
if (Dialog is null)
|
if (this.InvokeRequired)
|
||||||
|
{
|
||||||
|
EventHandler handler = new(CloseDialog);
|
||||||
|
this.Invoke(handler, sender, e);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (Dialog.BoundDialog is null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Dialog.Heading = e.Value;
|
Dialog.BoundDialog.Close();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ProgressBarValueChanged(object sender, ChangeEventArgs<int> e)
|
|
||||||
|
private void TestDialog_Load(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
if (Dialog is null || Dialog.ProgressBar is null)
|
this.Hide();
|
||||||
return;
|
TaskDialog.ShowDialog(Dialog);
|
||||||
|
|
||||||
Dialog.ProgressBar.Value = e.Value;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ProgressBarStyleChanged(object sender, ChangeEventArgs<ProgressBarStyle> e)
|
|
||||||
{
|
|
||||||
if (Dialog is null || Dialog.ProgressBar is null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
switch (e.Value)
|
|
||||||
{
|
|
||||||
case ProgressBarStyle.Continuous:
|
|
||||||
case ProgressBarStyle.Blocks:
|
|
||||||
Dialog.ProgressBar.State = TaskDialogProgressBarState.Normal;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ProgressBarStyle.Marquee:
|
|
||||||
Dialog.ProgressBar.State = TaskDialogProgressBarState.Marquee;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
60
Bloxstrap/Dialogs/BootstrapperStyles/VistaDialog.resx
Normal file
60
Bloxstrap/Dialogs/BootstrapperStyles/VistaDialog.resx
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
<root>
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
</root>
|
52
Bloxstrap/Dialogs/Preferences.Designer.cs
generated
52
Bloxstrap/Dialogs/Preferences.Designer.cs
generated
@ -33,6 +33,7 @@
|
|||||||
this.Tabs = new System.Windows.Forms.TabControl();
|
this.Tabs = new System.Windows.Forms.TabControl();
|
||||||
this.DialogTab = new System.Windows.Forms.TabPage();
|
this.DialogTab = new System.Windows.Forms.TabPage();
|
||||||
this.groupBox5 = new System.Windows.Forms.GroupBox();
|
this.groupBox5 = new System.Windows.Forms.GroupBox();
|
||||||
|
this.ToggleRPCButtons = new System.Windows.Forms.CheckBox();
|
||||||
this.ToggleDiscordRichPresence = new System.Windows.Forms.CheckBox();
|
this.ToggleDiscordRichPresence = new System.Windows.Forms.CheckBox();
|
||||||
this.groupBox3 = new System.Windows.Forms.GroupBox();
|
this.groupBox3 = new System.Windows.Forms.GroupBox();
|
||||||
this.IconPreview = new System.Windows.Forms.PictureBox();
|
this.IconPreview = new System.Windows.Forms.PictureBox();
|
||||||
@ -41,6 +42,7 @@
|
|||||||
this.StyleSelection = new System.Windows.Forms.ListBox();
|
this.StyleSelection = new System.Windows.Forms.ListBox();
|
||||||
this.InstallationTab = new System.Windows.Forms.TabPage();
|
this.InstallationTab = new System.Windows.Forms.TabPage();
|
||||||
this.groupBox4 = new System.Windows.Forms.GroupBox();
|
this.groupBox4 = new System.Windows.Forms.GroupBox();
|
||||||
|
this.ToggleMouseCursor = new System.Windows.Forms.CheckBox();
|
||||||
this.ToggleDeathSound = new System.Windows.Forms.CheckBox();
|
this.ToggleDeathSound = new System.Windows.Forms.CheckBox();
|
||||||
this.GroupBoxInstallLocation = new System.Windows.Forms.GroupBox();
|
this.GroupBoxInstallLocation = new System.Windows.Forms.GroupBox();
|
||||||
this.InstallLocationBrowseButton = new System.Windows.Forms.Button();
|
this.InstallLocationBrowseButton = new System.Windows.Forms.Button();
|
||||||
@ -79,7 +81,7 @@
|
|||||||
this.Tabs.Location = new System.Drawing.Point(12, 40);
|
this.Tabs.Location = new System.Drawing.Point(12, 40);
|
||||||
this.Tabs.Name = "Tabs";
|
this.Tabs.Name = "Tabs";
|
||||||
this.Tabs.SelectedIndex = 0;
|
this.Tabs.SelectedIndex = 0;
|
||||||
this.Tabs.Size = new System.Drawing.Size(442, 226);
|
this.Tabs.Size = new System.Drawing.Size(442, 247);
|
||||||
this.Tabs.TabIndex = 2;
|
this.Tabs.TabIndex = 2;
|
||||||
//
|
//
|
||||||
// DialogTab
|
// DialogTab
|
||||||
@ -90,20 +92,32 @@
|
|||||||
this.DialogTab.Location = new System.Drawing.Point(4, 24);
|
this.DialogTab.Location = new System.Drawing.Point(4, 24);
|
||||||
this.DialogTab.Name = "DialogTab";
|
this.DialogTab.Name = "DialogTab";
|
||||||
this.DialogTab.Padding = new System.Windows.Forms.Padding(3);
|
this.DialogTab.Padding = new System.Windows.Forms.Padding(3);
|
||||||
this.DialogTab.Size = new System.Drawing.Size(434, 198);
|
this.DialogTab.Size = new System.Drawing.Size(434, 219);
|
||||||
this.DialogTab.TabIndex = 0;
|
this.DialogTab.TabIndex = 0;
|
||||||
this.DialogTab.Text = "Bootstrapper";
|
this.DialogTab.Text = "Bootstrapper";
|
||||||
this.DialogTab.UseVisualStyleBackColor = true;
|
this.DialogTab.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
// groupBox5
|
// groupBox5
|
||||||
//
|
//
|
||||||
|
this.groupBox5.Controls.Add(this.ToggleRPCButtons);
|
||||||
this.groupBox5.Controls.Add(this.ToggleDiscordRichPresence);
|
this.groupBox5.Controls.Add(this.ToggleDiscordRichPresence);
|
||||||
this.groupBox5.Location = new System.Drawing.Point(5, 146);
|
this.groupBox5.Location = new System.Drawing.Point(5, 146);
|
||||||
this.groupBox5.Name = "groupBox5";
|
this.groupBox5.Name = "groupBox5";
|
||||||
this.groupBox5.Size = new System.Drawing.Size(422, 46);
|
this.groupBox5.Size = new System.Drawing.Size(422, 67);
|
||||||
this.groupBox5.TabIndex = 7;
|
this.groupBox5.TabIndex = 7;
|
||||||
this.groupBox5.TabStop = false;
|
this.groupBox5.TabStop = false;
|
||||||
this.groupBox5.Text = "Launch";
|
this.groupBox5.Text = "Discord Rich Presence";
|
||||||
|
//
|
||||||
|
// ToggleRPCButtons
|
||||||
|
//
|
||||||
|
this.ToggleRPCButtons.AutoSize = true;
|
||||||
|
this.ToggleRPCButtons.Location = new System.Drawing.Point(9, 40);
|
||||||
|
this.ToggleRPCButtons.Name = "ToggleRPCButtons";
|
||||||
|
this.ToggleRPCButtons.Size = new System.Drawing.Size(196, 19);
|
||||||
|
this.ToggleRPCButtons.TabIndex = 1;
|
||||||
|
this.ToggleRPCButtons.Text = "Hide activity interaction buttons";
|
||||||
|
this.ToggleRPCButtons.UseVisualStyleBackColor = true;
|
||||||
|
this.ToggleRPCButtons.CheckedChanged += new System.EventHandler(this.ToggleRPCButtons_CheckedChanged);
|
||||||
//
|
//
|
||||||
// ToggleDiscordRichPresence
|
// ToggleDiscordRichPresence
|
||||||
//
|
//
|
||||||
@ -112,9 +126,9 @@
|
|||||||
this.ToggleDiscordRichPresence.CheckState = System.Windows.Forms.CheckState.Checked;
|
this.ToggleDiscordRichPresence.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||||
this.ToggleDiscordRichPresence.Location = new System.Drawing.Point(9, 19);
|
this.ToggleDiscordRichPresence.Location = new System.Drawing.Point(9, 19);
|
||||||
this.ToggleDiscordRichPresence.Name = "ToggleDiscordRichPresence";
|
this.ToggleDiscordRichPresence.Name = "ToggleDiscordRichPresence";
|
||||||
this.ToggleDiscordRichPresence.Size = new System.Drawing.Size(274, 19);
|
this.ToggleDiscordRichPresence.Size = new System.Drawing.Size(129, 19);
|
||||||
this.ToggleDiscordRichPresence.TabIndex = 0;
|
this.ToggleDiscordRichPresence.TabIndex = 0;
|
||||||
this.ToggleDiscordRichPresence.Text = "Show game activity with Discord Rich Presence";
|
this.ToggleDiscordRichPresence.Text = "Show game activity";
|
||||||
this.ToggleDiscordRichPresence.UseVisualStyleBackColor = true;
|
this.ToggleDiscordRichPresence.UseVisualStyleBackColor = true;
|
||||||
this.ToggleDiscordRichPresence.CheckedChanged += new System.EventHandler(this.ToggleDiscordRichPresence_CheckedChanged);
|
this.ToggleDiscordRichPresence.CheckedChanged += new System.EventHandler(this.ToggleDiscordRichPresence_CheckedChanged);
|
||||||
//
|
//
|
||||||
@ -176,21 +190,34 @@
|
|||||||
this.InstallationTab.Location = new System.Drawing.Point(4, 24);
|
this.InstallationTab.Location = new System.Drawing.Point(4, 24);
|
||||||
this.InstallationTab.Name = "InstallationTab";
|
this.InstallationTab.Name = "InstallationTab";
|
||||||
this.InstallationTab.Padding = new System.Windows.Forms.Padding(3);
|
this.InstallationTab.Padding = new System.Windows.Forms.Padding(3);
|
||||||
this.InstallationTab.Size = new System.Drawing.Size(434, 198);
|
this.InstallationTab.Size = new System.Drawing.Size(434, 219);
|
||||||
this.InstallationTab.TabIndex = 2;
|
this.InstallationTab.TabIndex = 2;
|
||||||
this.InstallationTab.Text = "Installation";
|
this.InstallationTab.Text = "Installation";
|
||||||
this.InstallationTab.UseVisualStyleBackColor = true;
|
this.InstallationTab.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
// groupBox4
|
// groupBox4
|
||||||
//
|
//
|
||||||
|
this.groupBox4.Controls.Add(this.ToggleMouseCursor);
|
||||||
this.groupBox4.Controls.Add(this.ToggleDeathSound);
|
this.groupBox4.Controls.Add(this.ToggleDeathSound);
|
||||||
this.groupBox4.Location = new System.Drawing.Point(5, 60);
|
this.groupBox4.Location = new System.Drawing.Point(5, 60);
|
||||||
this.groupBox4.Name = "groupBox4";
|
this.groupBox4.Name = "groupBox4";
|
||||||
this.groupBox4.Size = new System.Drawing.Size(422, 46);
|
this.groupBox4.Size = new System.Drawing.Size(422, 65);
|
||||||
this.groupBox4.TabIndex = 2;
|
this.groupBox4.TabIndex = 2;
|
||||||
this.groupBox4.TabStop = false;
|
this.groupBox4.TabStop = false;
|
||||||
this.groupBox4.Text = "Modifications";
|
this.groupBox4.Text = "Modifications";
|
||||||
//
|
//
|
||||||
|
// ToggleMouseCursor
|
||||||
|
//
|
||||||
|
this.ToggleMouseCursor.AutoSize = true;
|
||||||
|
this.ToggleMouseCursor.Location = new System.Drawing.Point(9, 40);
|
||||||
|
this.ToggleMouseCursor.Margin = new System.Windows.Forms.Padding(2);
|
||||||
|
this.ToggleMouseCursor.Name = "ToggleMouseCursor";
|
||||||
|
this.ToggleMouseCursor.Size = new System.Drawing.Size(140, 19);
|
||||||
|
this.ToggleMouseCursor.TabIndex = 2;
|
||||||
|
this.ToggleMouseCursor.Text = "Use old mouse cursor";
|
||||||
|
this.ToggleMouseCursor.UseVisualStyleBackColor = true;
|
||||||
|
this.ToggleMouseCursor.CheckedChanged += new System.EventHandler(this.ToggleMouseCursor_CheckedChanged);
|
||||||
|
//
|
||||||
// ToggleDeathSound
|
// ToggleDeathSound
|
||||||
//
|
//
|
||||||
this.ToggleDeathSound.AutoSize = true;
|
this.ToggleDeathSound.AutoSize = true;
|
||||||
@ -214,7 +241,7 @@
|
|||||||
this.GroupBoxInstallLocation.Size = new System.Drawing.Size(422, 54);
|
this.GroupBoxInstallLocation.Size = new System.Drawing.Size(422, 54);
|
||||||
this.GroupBoxInstallLocation.TabIndex = 0;
|
this.GroupBoxInstallLocation.TabIndex = 0;
|
||||||
this.GroupBoxInstallLocation.TabStop = false;
|
this.GroupBoxInstallLocation.TabStop = false;
|
||||||
this.GroupBoxInstallLocation.Text = "Install Location";
|
this.GroupBoxInstallLocation.Text = "Location";
|
||||||
//
|
//
|
||||||
// InstallLocationBrowseButton
|
// InstallLocationBrowseButton
|
||||||
//
|
//
|
||||||
@ -252,10 +279,9 @@
|
|||||||
this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
|
this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
|
||||||
| System.Windows.Forms.AnchorStyles.Right)));
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.panel1.BackColor = System.Drawing.SystemColors.Control;
|
this.panel1.BackColor = System.Drawing.SystemColors.Control;
|
||||||
this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
|
||||||
this.panel1.Controls.Add(this.PreviewButton);
|
this.panel1.Controls.Add(this.PreviewButton);
|
||||||
this.panel1.Controls.Add(this.SaveButton);
|
this.panel1.Controls.Add(this.SaveButton);
|
||||||
this.panel1.Location = new System.Drawing.Point(-1, 277);
|
this.panel1.Location = new System.Drawing.Point(-1, 298);
|
||||||
this.panel1.Name = "panel1";
|
this.panel1.Name = "panel1";
|
||||||
this.panel1.Size = new System.Drawing.Size(466, 42);
|
this.panel1.Size = new System.Drawing.Size(466, 42);
|
||||||
this.panel1.TabIndex = 6;
|
this.panel1.TabIndex = 6;
|
||||||
@ -282,7 +308,7 @@
|
|||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
this.BackColor = System.Drawing.SystemColors.Window;
|
this.BackColor = System.Drawing.SystemColors.Window;
|
||||||
this.ClientSize = new System.Drawing.Size(464, 318);
|
this.ClientSize = new System.Drawing.Size(464, 339);
|
||||||
this.Controls.Add(this.panel1);
|
this.Controls.Add(this.panel1);
|
||||||
this.Controls.Add(this.Tabs);
|
this.Controls.Add(this.Tabs);
|
||||||
this.Controls.Add(this.label1);
|
this.Controls.Add(this.label1);
|
||||||
@ -332,5 +358,7 @@
|
|||||||
private GroupBox groupBox5;
|
private GroupBox groupBox5;
|
||||||
private CheckBox ToggleDiscordRichPresence;
|
private CheckBox ToggleDiscordRichPresence;
|
||||||
private ToolTip InfoTooltip;
|
private ToolTip InfoTooltip;
|
||||||
|
private CheckBox ToggleMouseCursor;
|
||||||
|
private CheckBox ToggleRPCButtons;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -10,8 +10,11 @@ namespace Bloxstrap.Dialogs
|
|||||||
{
|
{
|
||||||
private static readonly IReadOnlyDictionary<string, BootstrapperStyle> SelectableStyles = new Dictionary<string, BootstrapperStyle>()
|
private static readonly IReadOnlyDictionary<string, BootstrapperStyle> SelectableStyles = new Dictionary<string, BootstrapperStyle>()
|
||||||
{
|
{
|
||||||
{ "Legacy (2011 - 2014)", BootstrapperStyle.LegacyDialog },
|
{ "Vista (2009 - 2011)", BootstrapperStyle.VistaDialog },
|
||||||
|
{ "Legacy (2009 - 2011)", BootstrapperStyle.LegacyDialog2009 },
|
||||||
|
{ "Legacy (2011 - 2014)", BootstrapperStyle.LegacyDialog2011 },
|
||||||
{ "Progress (~2014)", BootstrapperStyle.ProgressDialog },
|
{ "Progress (~2014)", BootstrapperStyle.ProgressDialog },
|
||||||
|
{ "Progress (Dark)", BootstrapperStyle.ProgressDialogDark },
|
||||||
};
|
};
|
||||||
|
|
||||||
private static readonly IReadOnlyDictionary<string, BootstrapperIcon> SelectableIcons = new Dictionary<string, BootstrapperIcon>()
|
private static readonly IReadOnlyDictionary<string, BootstrapperIcon> SelectableIcons = new Dictionary<string, BootstrapperIcon>()
|
||||||
@ -28,7 +31,9 @@ namespace Bloxstrap.Dialogs
|
|||||||
private BootstrapperStyle? _selectedStyle;
|
private BootstrapperStyle? _selectedStyle;
|
||||||
private BootstrapperIcon? _selectedIcon;
|
private BootstrapperIcon? _selectedIcon;
|
||||||
private bool _useDiscordRichPresence = true;
|
private bool _useDiscordRichPresence = true;
|
||||||
|
private bool _hideRPCButtons = false;
|
||||||
private bool _useOldDeathSound = true;
|
private bool _useOldDeathSound = true;
|
||||||
|
private bool _useOldMouseCursor = false;
|
||||||
|
|
||||||
private BootstrapperStyle SelectedStyle
|
private BootstrapperStyle SelectedStyle
|
||||||
{
|
{
|
||||||
@ -75,6 +80,22 @@ namespace Bloxstrap.Dialogs
|
|||||||
_useDiscordRichPresence = value;
|
_useDiscordRichPresence = value;
|
||||||
|
|
||||||
this.ToggleDiscordRichPresence.Checked = value;
|
this.ToggleDiscordRichPresence.Checked = value;
|
||||||
|
this.ToggleRPCButtons.Enabled = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool HideRPCButtons
|
||||||
|
{
|
||||||
|
get => _hideRPCButtons;
|
||||||
|
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (_hideRPCButtons == value)
|
||||||
|
return;
|
||||||
|
|
||||||
|
_hideRPCButtons = value;
|
||||||
|
|
||||||
|
this.ToggleRPCButtons.Checked = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -93,6 +114,21 @@ namespace Bloxstrap.Dialogs
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private bool UseOldMouseCursor
|
||||||
|
{
|
||||||
|
get => _useOldMouseCursor;
|
||||||
|
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (_useOldMouseCursor == value)
|
||||||
|
return;
|
||||||
|
|
||||||
|
_useOldMouseCursor = value;
|
||||||
|
|
||||||
|
this.ToggleMouseCursor.Checked = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public Preferences()
|
public Preferences()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
@ -122,15 +158,18 @@ namespace Bloxstrap.Dialogs
|
|||||||
this.IconSelection.Items.Add(icon.Key);
|
this.IconSelection.Items.Add(icon.Key);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.InfoTooltip.SetToolTip(this.StyleSelection, "Choose how the bootstrapper dialog should look.");
|
this.InfoTooltip.SetToolTip(this.StyleSelection, "Choose how the bootstrapper dialog should look.\nYou can use the 'Preview' button to preview the bootstrapper look.");
|
||||||
this.InfoTooltip.SetToolTip(this.IconSelection, "Choose what icon the bootstrapper should use.");
|
this.InfoTooltip.SetToolTip(this.IconSelection, "Choose what icon the bootstrapper should use.");
|
||||||
this.InfoTooltip.SetToolTip(this.GroupBoxInstallLocation, "Choose where Bloxstrap should install to.\nThis is useful if you typically install all your games to a separate storage drive.");
|
this.InfoTooltip.SetToolTip(this.GroupBoxInstallLocation, "Choose where Bloxstrap should install to.\nThis is useful if you typically install all your games to a separate storage drive.");
|
||||||
this.InfoTooltip.SetToolTip(this.ToggleDiscordRichPresence, "Choose whether to show what game you're playing on your Discord profile.\nThis will ONLY work when you launch a game from the website, and is not supported in the Beta App.");
|
this.InfoTooltip.SetToolTip(this.ToggleDiscordRichPresence, "Choose whether to show what game you're playing on your Discord activity status.\nThis will only work when you launch a game from the website, and is not supported in the Beta App.");
|
||||||
|
this.InfoTooltip.SetToolTip(this.ToggleRPCButtons, "Choose whether the buttons to play/view game info should be hidden from activity status.");
|
||||||
|
|
||||||
SelectedStyle = Program.Settings.BootstrapperStyle;
|
SelectedStyle = Program.Settings.BootstrapperStyle;
|
||||||
SelectedIcon = Program.Settings.BootstrapperIcon;
|
SelectedIcon = Program.Settings.BootstrapperIcon;
|
||||||
UseDiscordRichPresence = Program.Settings.UseDiscordRichPresence;
|
UseDiscordRichPresence = Program.Settings.UseDiscordRichPresence;
|
||||||
|
HideRPCButtons = Program.Settings.HideRPCButtons;
|
||||||
UseOldDeathSound = Program.Settings.UseOldDeathSound;
|
UseOldDeathSound = Program.Settings.UseOldDeathSound;
|
||||||
|
UseOldMouseCursor = Program.Settings.UseOldMouseCursor;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void InstallLocationBrowseButton_Click(object sender, EventArgs e)
|
private void InstallLocationBrowseButton_Click(object sender, EventArgs e)
|
||||||
@ -196,7 +235,11 @@ namespace Bloxstrap.Dialogs
|
|||||||
// this will be set in the registry after first install
|
// this will be set in the registry after first install
|
||||||
Program.BaseDirectory = installLocation;
|
Program.BaseDirectory = installLocation;
|
||||||
}
|
}
|
||||||
else if (Program.BaseDirectory != installLocation)
|
else
|
||||||
|
{
|
||||||
|
Program.SettingsManager.ShouldSave = true;
|
||||||
|
|
||||||
|
if (Program.BaseDirectory != installLocation)
|
||||||
{
|
{
|
||||||
Program.ShowMessageBox(MessageBoxIcon.Information, $"{Program.ProjectName} will install to the new location you've set the next time it runs.");
|
Program.ShowMessageBox(MessageBoxIcon.Information, $"{Program.ProjectName} will install to the new location you've set the next time it runs.");
|
||||||
|
|
||||||
@ -212,16 +255,17 @@ namespace Bloxstrap.Dialogs
|
|||||||
// we don't need to copy the bootstrapper over since the install process will do that automatically
|
// we don't need to copy the bootstrapper over since the install process will do that automatically
|
||||||
|
|
||||||
Program.SettingsManager.Save();
|
Program.SettingsManager.Save();
|
||||||
|
|
||||||
File.Copy(Path.Combine(Program.BaseDirectory, "Settings.json"), Path.Combine(installLocation, "Settings.json"));
|
File.Copy(Path.Combine(Program.BaseDirectory, "Settings.json"), Path.Combine(installLocation, "Settings.json"));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (!Program.IsFirstRun)
|
|
||||||
Program.SettingsManager.ShouldSave = true;
|
|
||||||
|
|
||||||
Program.Settings.BootstrapperStyle = SelectedStyle;
|
Program.Settings.BootstrapperStyle = SelectedStyle;
|
||||||
Program.Settings.BootstrapperIcon = SelectedIcon;
|
Program.Settings.BootstrapperIcon = SelectedIcon;
|
||||||
Program.Settings.UseDiscordRichPresence = UseDiscordRichPresence;
|
Program.Settings.UseDiscordRichPresence = UseDiscordRichPresence;
|
||||||
|
Program.Settings.HideRPCButtons = HideRPCButtons;
|
||||||
Program.Settings.UseOldDeathSound = UseOldDeathSound;
|
Program.Settings.UseOldDeathSound = UseOldDeathSound;
|
||||||
|
Program.Settings.UseOldMouseCursor = UseOldMouseCursor;
|
||||||
|
|
||||||
this.Close();
|
this.Close();
|
||||||
}
|
}
|
||||||
@ -236,13 +280,25 @@ namespace Bloxstrap.Dialogs
|
|||||||
|
|
||||||
switch (SelectedStyle)
|
switch (SelectedStyle)
|
||||||
{
|
{
|
||||||
case BootstrapperStyle.LegacyDialog:
|
case BootstrapperStyle.VistaDialog:
|
||||||
new LegacyDialog().ShowDialog();
|
new VistaDialog().ShowDialog();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case BootstrapperStyle.LegacyDialog2009:
|
||||||
|
new LegacyDialog2009().ShowDialog();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case BootstrapperStyle.LegacyDialog2011:
|
||||||
|
new LegacyDialog2011().ShowDialog();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case BootstrapperStyle.ProgressDialog:
|
case BootstrapperStyle.ProgressDialog:
|
||||||
new ProgressDialog().ShowDialog();
|
new ProgressDialog().ShowDialog();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case BootstrapperStyle.ProgressDialogDark:
|
||||||
|
new ProgressDialogDark().ShowDialog();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
Program.Settings.BootstrapperIcon = savedIcon;
|
Program.Settings.BootstrapperIcon = savedIcon;
|
||||||
@ -255,9 +311,19 @@ namespace Bloxstrap.Dialogs
|
|||||||
UseDiscordRichPresence = this.ToggleDiscordRichPresence.Checked;
|
UseDiscordRichPresence = this.ToggleDiscordRichPresence.Checked;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void ToggleRPCButtons_CheckedChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
HideRPCButtons = this.ToggleRPCButtons.Checked;
|
||||||
|
}
|
||||||
|
|
||||||
private void ToggleDeathSound_CheckedChanged(object sender, EventArgs e)
|
private void ToggleDeathSound_CheckedChanged(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
UseOldDeathSound = this.ToggleDeathSound.Checked;
|
UseOldDeathSound = this.ToggleDeathSound.Checked;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void ToggleMouseCursor_CheckedChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
UseOldMouseCursor = this.ToggleMouseCursor.Checked;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,9 @@
|
|||||||
public enum BootstrapperStyle
|
public enum BootstrapperStyle
|
||||||
{
|
{
|
||||||
VistaDialog,
|
VistaDialog,
|
||||||
LegacyDialog,
|
LegacyDialog2009,
|
||||||
ProgressDialog
|
LegacyDialog2011,
|
||||||
|
ProgressDialog,
|
||||||
|
ProgressDialogDark,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -30,6 +30,26 @@ namespace Bloxstrap.Helpers
|
|||||||
placeThumbnail = thumbnailInfo["data"][0]["imageUrl"].Value<string>();
|
placeThumbnail = thumbnailInfo["data"][0]["imageUrl"].Value<string>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DiscordRPC.Button[]? buttons = null;
|
||||||
|
|
||||||
|
if (!Program.Settings.HideRPCButtons)
|
||||||
|
{
|
||||||
|
buttons = new DiscordRPC.Button[]
|
||||||
|
{
|
||||||
|
new DiscordRPC.Button()
|
||||||
|
{
|
||||||
|
Label = "Play",
|
||||||
|
Url = $"https://www.roblox.com/games/start?placeId={placeId}&launchData=%7B%7D"
|
||||||
|
},
|
||||||
|
|
||||||
|
new DiscordRPC.Button()
|
||||||
|
{
|
||||||
|
Label = "View Details",
|
||||||
|
Url = $"https://www.roblox.com/games/{placeId}"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
RichPresence.Initialize();
|
RichPresence.Initialize();
|
||||||
|
|
||||||
RichPresence.SetPresence(new RichPresence()
|
RichPresence.SetPresence(new RichPresence()
|
||||||
@ -46,20 +66,7 @@ namespace Bloxstrap.Helpers
|
|||||||
SmallImageText = "Rich Presence provided by Bloxstrap"
|
SmallImageText = "Rich Presence provided by Bloxstrap"
|
||||||
},
|
},
|
||||||
|
|
||||||
Buttons = new DiscordRPC.Button[]
|
Buttons = buttons
|
||||||
{
|
|
||||||
new DiscordRPC.Button()
|
|
||||||
{
|
|
||||||
Label = "Play",
|
|
||||||
Url = $"https://www.roblox.com/games/start?placeId={placeId}&launchData=%7B%7D"
|
|
||||||
},
|
|
||||||
|
|
||||||
new DiscordRPC.Button()
|
|
||||||
{
|
|
||||||
Label = "View Details",
|
|
||||||
Url = $"https://www.roblox.com/games/{placeId}"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -17,7 +17,7 @@ namespace Bloxstrap.Helpers
|
|||||||
if (installedVersionInfo.ProductVersion != currentVersionInfo.ProductVersion)
|
if (installedVersionInfo.ProductVersion != currentVersionInfo.ProductVersion)
|
||||||
{
|
{
|
||||||
DialogResult result = MessageBox.Show(
|
DialogResult result = MessageBox.Show(
|
||||||
$"The version of {Program.ProjectName} you've launched is newer than the version you currently have installed.\nWould you like to update your installed version of {Program.ProjectName}?",
|
$"The version of {Program.ProjectName} you've launched is newer than the version you currently have installed.\nWould you like to update your currently installed version?",
|
||||||
Program.ProjectName,
|
Program.ProjectName,
|
||||||
MessageBoxButtons.YesNo,
|
MessageBoxButtons.YesNo,
|
||||||
MessageBoxIcon.Question
|
MessageBoxIcon.Question
|
||||||
@ -59,7 +59,7 @@ namespace Bloxstrap.Helpers
|
|||||||
if (currentVersion != latestVersion)
|
if (currentVersion != latestVersion)
|
||||||
{
|
{
|
||||||
DialogResult result = MessageBox.Show(
|
DialogResult result = MessageBox.Show(
|
||||||
$"A new version of {Program.ProjectName} is available\n\nRelease notes:\n{releaseNotes}\n\nDo you want to download {latestVersion}?",
|
$"A new version of {Program.ProjectName} is available\n\n[{latestVersion}]\n{releaseNotes}\n\nWould you like to download it?",
|
||||||
Program.ProjectName,
|
Program.ProjectName,
|
||||||
MessageBoxButtons.YesNo,
|
MessageBoxButtons.YesNo,
|
||||||
MessageBoxIcon.Question
|
MessageBoxIcon.Question
|
||||||
|
20
Bloxstrap/Properties/Resources.Designer.cs
generated
20
Bloxstrap/Properties/Resources.Designer.cs
generated
@ -80,6 +80,26 @@ namespace Bloxstrap.Properties {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Bitmap DarkCancelButton {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("DarkCancelButton", resourceCulture);
|
||||||
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Bitmap DarkCancelButtonHover {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("DarkCancelButtonHover", resourceCulture);
|
||||||
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
|
/// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -124,6 +124,12 @@
|
|||||||
<data name="CancelButtonHover" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="CancelButtonHover" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\CancelButtonHover.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\CancelButtonHover.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="DarkCancelButton" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\DarkCancelButton.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
|
<data name="DarkCancelButtonHover" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\DarkCancelButtonHover.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
<data name="Icon2009_ico" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="Icon2009_ico" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\Icon2009-ico.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\Icon2009-ico.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
|
BIN
Bloxstrap/Resources/DarkCancelButton.png
Normal file
BIN
Bloxstrap/Resources/DarkCancelButton.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
BIN
Bloxstrap/Resources/DarkCancelButtonHover.png
Normal file
BIN
Bloxstrap/Resources/DarkCancelButtonHover.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
Binary file not shown.
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 16 KiB |
@ -11,13 +11,16 @@ namespace Bloxstrap
|
|||||||
public BootstrapperStyle BootstrapperStyle { get; set; } = BootstrapperStyle.ProgressDialog;
|
public BootstrapperStyle BootstrapperStyle { get; set; } = BootstrapperStyle.ProgressDialog;
|
||||||
public BootstrapperIcon BootstrapperIcon { get; set; } = BootstrapperIcon.IconBloxstrap;
|
public BootstrapperIcon BootstrapperIcon { get; set; } = BootstrapperIcon.IconBloxstrap;
|
||||||
public bool UseDiscordRichPresence { get; set; } = true;
|
public bool UseDiscordRichPresence { get; set; } = true;
|
||||||
|
public bool HideRPCButtons { get; set; } = false;
|
||||||
public bool UseOldDeathSound { get; set; } = true;
|
public bool UseOldDeathSound { get; set; } = true;
|
||||||
|
public bool UseOldMouseCursor { get; set; } = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public class SettingsManager
|
public class SettingsManager
|
||||||
{
|
{
|
||||||
public SettingsFormat Settings = new();
|
public SettingsFormat Settings = new();
|
||||||
public bool ShouldSave = false;
|
public bool ShouldSave = false;
|
||||||
|
private bool IsSaving = false;
|
||||||
|
|
||||||
private string _saveLocation;
|
private string _saveLocation;
|
||||||
public string SaveLocation
|
public string SaveLocation
|
||||||
@ -52,6 +55,17 @@ namespace Bloxstrap
|
|||||||
|
|
||||||
public void Save()
|
public void Save()
|
||||||
{
|
{
|
||||||
|
if (IsSaving)
|
||||||
|
{
|
||||||
|
// sometimes Save() is called at the same time from both Main() and Exit(),
|
||||||
|
// so this is here to avoid the program exiting before saving
|
||||||
|
|
||||||
|
Thread.Sleep(1000);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
IsSaving = true;
|
||||||
|
|
||||||
Debug.WriteLine("Attempting to save...");
|
Debug.WriteLine("Attempting to save...");
|
||||||
|
|
||||||
string SettingsJson = JsonSerializer.Serialize(Settings, new JsonSerializerOptions { WriteIndented = true });
|
string SettingsJson = JsonSerializer.Serialize(Settings, new JsonSerializerOptions { WriteIndented = true });
|
||||||
@ -65,6 +79,8 @@ namespace Bloxstrap
|
|||||||
|
|
||||||
// save settings
|
// save settings
|
||||||
File.WriteAllText(SaveLocation, SettingsJson);
|
File.WriteAllText(SaveLocation, SettingsJson);
|
||||||
|
|
||||||
|
IsSaving = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,10 +14,10 @@ Please keep in mind that **Bloxstrap is in very early development**, and you'll
|
|||||||
## Features
|
## Features
|
||||||
Here's some of the features that Bloxstrap provides over the stock Roblox bootstrapper:
|
Here's some of the features that Bloxstrap provides over the stock Roblox bootstrapper:
|
||||||
|
|
||||||
* Bootstrapper style can be customized (including being able to emulate older version looks)
|
* Old death sound and mouse cursor can be permanently re-enabled
|
||||||
* Ability to choose where to install Roblox to
|
* Lets you choose where to install Roblox to
|
||||||
* Old death sound can be re-enabled permanently
|
* Integration with Discord Rich Presence
|
||||||
* Support for Discord Rich Presence
|
* Custom bootstrapper styles (includes old versions and dark theme)
|
||||||
|
|
||||||
## Installing
|
## Installing
|
||||||
Bloxstrap requires the [x86 .NET 6 Desktop Runtime](https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/runtime-desktop-6.0.7-windows-x86-installer). If you don't already have it installed, you'll be prompted to install it when running Bloxstrap.
|
Bloxstrap requires the [x86 .NET 6 Desktop Runtime](https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/runtime-desktop-6.0.7-windows-x86-installer). If you don't already have it installed, you'll be prompted to install it when running Bloxstrap.
|
||||||
|
Loading…
Reference in New Issue
Block a user