mirror of
https://github.com/bloxstraplabs/bloxstrap.git
synced 2025-04-21 10:01:27 -07:00
Add revamped config menu w/ WPF and theming
This commit is contained in:
parent
a160efaf98
commit
350b655060
@ -5,12 +5,13 @@
|
|||||||
<TargetFramework>net6.0-windows</TargetFramework>
|
<TargetFramework>net6.0-windows</TargetFramework>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<UseWindowsForms>true</UseWindowsForms>
|
<UseWindowsForms>true</UseWindowsForms>
|
||||||
|
<UseWPF>true</UseWPF>
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
<Platforms>AnyCPU;x86</Platforms>
|
<Platforms>AnyCPU;x86</Platforms>
|
||||||
<ApplicationIcon>Bloxstrap.ico</ApplicationIcon>
|
<ApplicationIcon>Bloxstrap.ico</ApplicationIcon>
|
||||||
<Version>1.4.4</Version>
|
<Version>1.5.0</Version>
|
||||||
<FileVersion>1.4.4.0</FileVersion>
|
<FileVersion>1.5.0.0</FileVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
@ -26,8 +27,7 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Update="Dialogs\BootstrapperStyles\LegacyDialog2009.cs" />
|
<Compile Update="Dialogs\BootstrapperDialogs\LegacyDialog2009.cs" />
|
||||||
<Compile Update="Dialogs\BootstrapperStyles\ProgressDialogDark.cs" />
|
|
||||||
<Compile Update="Properties\Resources.Designer.cs">
|
<Compile Update="Properties\Resources.Designer.cs">
|
||||||
<DesignTime>True</DesignTime>
|
<DesignTime>True</DesignTime>
|
||||||
<AutoGen>True</AutoGen>
|
<AutoGen>True</AutoGen>
|
||||||
|
@ -6,7 +6,7 @@ using System.Net.Http;
|
|||||||
using Microsoft.Win32;
|
using Microsoft.Win32;
|
||||||
|
|
||||||
using Bloxstrap.Enums;
|
using Bloxstrap.Enums;
|
||||||
using Bloxstrap.Dialogs.BootstrapperStyles;
|
using Bloxstrap.Dialogs.BootstrapperDialogs;
|
||||||
using Bloxstrap.Helpers;
|
using Bloxstrap.Helpers;
|
||||||
using Bloxstrap.Helpers.Integrations;
|
using Bloxstrap.Helpers.Integrations;
|
||||||
using Bloxstrap.Helpers.RSMM;
|
using Bloxstrap.Helpers.RSMM;
|
||||||
@ -79,7 +79,7 @@ namespace Bloxstrap
|
|||||||
private int ProgressIncrement;
|
private int ProgressIncrement;
|
||||||
private bool CancelFired = false;
|
private bool CancelFired = false;
|
||||||
|
|
||||||
public IBootstrapperDialog Dialog;
|
public IBootstrapperDialog Dialog = null!;
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Core
|
#region Core
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
using Bloxstrap.Enums;
|
using Bloxstrap.Enums;
|
||||||
|
|
||||||
namespace Bloxstrap.Dialogs.BootstrapperStyles
|
namespace Bloxstrap.Dialogs.BootstrapperDialogs
|
||||||
{
|
{
|
||||||
public class BootstrapperStyleForm : Form, IBootstrapperDialog
|
public class BootstrapperDialogForm : Form, IBootstrapperDialog
|
||||||
{
|
{
|
||||||
public Bootstrapper? Bootstrapper { get; set; }
|
public Bootstrapper? Bootstrapper { get; set; }
|
||||||
|
|
||||||
@ -66,7 +66,7 @@ namespace Bloxstrap.Dialogs.BootstrapperStyles
|
|||||||
|
|
||||||
if (Bootstrapper is null)
|
if (Bootstrapper is null)
|
||||||
{
|
{
|
||||||
Message = "Select Cancel to return to preferences";
|
Message = "Style Preview - Click Cancel to return";
|
||||||
CancelEnabled = true;
|
CancelEnabled = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
@ -1,6 +1,4 @@
|
|||||||
using Bloxstrap.Helpers.RSMM;
|
namespace Bloxstrap.Dialogs.BootstrapperDialogs
|
||||||
|
|
||||||
namespace Bloxstrap.Dialogs.BootstrapperStyles
|
|
||||||
{
|
{
|
||||||
public interface IBootstrapperDialog
|
public interface IBootstrapperDialog
|
||||||
{
|
{
|
@ -1,4 +1,4 @@
|
|||||||
namespace Bloxstrap.Dialogs.BootstrapperStyles
|
namespace Bloxstrap.Dialogs.BootstrapperDialogs
|
||||||
{
|
{
|
||||||
partial class LegacyDialog2009
|
partial class LegacyDialog2009
|
||||||
{
|
{
|
@ -1,9 +1,9 @@
|
|||||||
namespace Bloxstrap.Dialogs.BootstrapperStyles
|
namespace Bloxstrap.Dialogs.BootstrapperDialogs
|
||||||
{
|
{
|
||||||
// windows: https://youtu.be/VpduiruysuM?t=18
|
// windows: https://youtu.be/VpduiruysuM?t=18
|
||||||
// mac: https://youtu.be/ncHhbcVDRgQ?t=63
|
// mac: https://youtu.be/ncHhbcVDRgQ?t=63
|
||||||
|
|
||||||
public partial class LegacyDialog2009 : BootstrapperStyleForm
|
public partial class LegacyDialog2009 : BootstrapperDialogForm
|
||||||
{
|
{
|
||||||
protected override string _message
|
protected override string _message
|
||||||
{
|
{
|
@ -1,4 +1,4 @@
|
|||||||
namespace Bloxstrap.Dialogs.BootstrapperStyles
|
namespace Bloxstrap.Dialogs.BootstrapperDialogs
|
||||||
{
|
{
|
||||||
partial class LegacyDialog2011
|
partial class LegacyDialog2011
|
||||||
{
|
{
|
@ -1,10 +1,10 @@
|
|||||||
using Bloxstrap.Enums;
|
using Bloxstrap.Enums;
|
||||||
|
|
||||||
namespace Bloxstrap.Dialogs.BootstrapperStyles
|
namespace Bloxstrap.Dialogs.BootstrapperDialogs
|
||||||
{
|
{
|
||||||
// https://youtu.be/3K9oCEMHj2s?t=35
|
// https://youtu.be/3K9oCEMHj2s?t=35
|
||||||
|
|
||||||
public partial class LegacyDialog2011 : BootstrapperStyleForm
|
public partial class LegacyDialog2011 : BootstrapperDialogForm
|
||||||
{
|
{
|
||||||
protected override string _message
|
protected override string _message
|
||||||
{
|
{
|
@ -1,4 +1,4 @@
|
|||||||
namespace Bloxstrap.Dialogs.BootstrapperStyles
|
namespace Bloxstrap.Dialogs.BootstrapperDialogs
|
||||||
{
|
{
|
||||||
partial class ProgressDialog
|
partial class ProgressDialog
|
||||||
{
|
{
|
@ -1,10 +1,10 @@
|
|||||||
using Bloxstrap.Enums;
|
using Bloxstrap.Enums;
|
||||||
|
|
||||||
namespace Bloxstrap.Dialogs.BootstrapperStyles
|
namespace Bloxstrap.Dialogs.BootstrapperDialogs
|
||||||
{
|
{
|
||||||
// basically just the modern dialog
|
// basically just the modern dialog
|
||||||
|
|
||||||
public partial class ProgressDialog : BootstrapperStyleForm
|
public partial class ProgressDialog : BootstrapperDialogForm
|
||||||
{
|
{
|
||||||
protected override string _message
|
protected override string _message
|
||||||
{
|
{
|
||||||
@ -34,6 +34,14 @@ namespace Bloxstrap.Dialogs.BootstrapperStyles
|
|||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
|
||||||
|
if (Program.Settings.Theme.GetFinal() == Theme.Dark)
|
||||||
|
{
|
||||||
|
this.labelMessage.ForeColor = SystemColors.Window;
|
||||||
|
this.buttonCancel.Image = Properties.Resources.DarkCancelButton;
|
||||||
|
this.panel1.BackColor = Color.FromArgb(35, 37, 39);
|
||||||
|
this.BackColor = Color.FromArgb(25, 27, 29);
|
||||||
|
}
|
||||||
|
|
||||||
Bootstrapper = bootstrapper;
|
Bootstrapper = bootstrapper;
|
||||||
|
|
||||||
this.IconBox.BackgroundImage = Program.Settings.BootstrapperIcon.GetBitmap();
|
this.IconBox.BackgroundImage = Program.Settings.BootstrapperIcon.GetBitmap();
|
||||||
@ -42,14 +50,28 @@ namespace Bloxstrap.Dialogs.BootstrapperStyles
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void ButtonCancel_MouseEnter(object sender, EventArgs e)
|
private void ButtonCancel_MouseEnter(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (Program.Settings.Theme.GetFinal() == Theme.Dark)
|
||||||
|
{
|
||||||
|
this.buttonCancel.Image = Properties.Resources.DarkCancelButtonHover;
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
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)
|
||||||
|
{
|
||||||
|
if (Program.Settings.Theme.GetFinal() == Theme.Dark)
|
||||||
|
{
|
||||||
|
this.buttonCancel.Image = Properties.Resources.DarkCancelButton;
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
this.buttonCancel.Image = Properties.Resources.CancelButton;
|
this.buttonCancel.Image = Properties.Resources.CancelButton;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void ProgressDialog_Load(object sender, EventArgs e)
|
private void ProgressDialog_Load(object sender, EventArgs e)
|
||||||
{
|
{
|
@ -1,4 +1,4 @@
|
|||||||
namespace Bloxstrap.Dialogs.BootstrapperStyles
|
namespace Bloxstrap.Dialogs.BootstrapperDialogs
|
||||||
{
|
{
|
||||||
partial class VistaDialog
|
partial class VistaDialog
|
||||||
{
|
{
|
@ -1,6 +1,6 @@
|
|||||||
using Bloxstrap.Enums;
|
using Bloxstrap.Enums;
|
||||||
|
|
||||||
namespace Bloxstrap.Dialogs.BootstrapperStyles
|
namespace Bloxstrap.Dialogs.BootstrapperDialogs
|
||||||
{
|
{
|
||||||
// https://youtu.be/h0_AL95Sc3o?t=48
|
// https://youtu.be/h0_AL95Sc3o?t=48
|
||||||
|
|
||||||
@ -8,7 +8,7 @@ namespace Bloxstrap.Dialogs.BootstrapperStyles
|
|||||||
// since taskdialog is part of winforms, it can't really be properly used without a form
|
// since taskdialog is part of winforms, it can't really be properly used without a form
|
||||||
// for example, cross-threaded calls to ui controls can't really be done outside of a form
|
// for example, cross-threaded calls to ui controls can't really be done outside of a form
|
||||||
|
|
||||||
public partial class VistaDialog : BootstrapperStyleForm
|
public partial class VistaDialog : BootstrapperDialogForm
|
||||||
{
|
{
|
||||||
private TaskDialogPage Dialog;
|
private TaskDialogPage Dialog;
|
||||||
|
|
@ -1,128 +0,0 @@
|
|||||||
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";
|
|
||||||
this.Load += new System.EventHandler(this.ProgressDialogDark_Load);
|
|
||||||
((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;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,59 +0,0 @@
|
|||||||
using Bloxstrap.Enums;
|
|
||||||
|
|
||||||
namespace Bloxstrap.Dialogs.BootstrapperStyles
|
|
||||||
{
|
|
||||||
// basically just the modern dialog
|
|
||||||
|
|
||||||
public partial class ProgressDialogDark : BootstrapperStyleForm
|
|
||||||
{
|
|
||||||
protected override string _message
|
|
||||||
{
|
|
||||||
get => labelMessage.Text;
|
|
||||||
set => labelMessage.Text = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override ProgressBarStyle _progressStyle
|
|
||||||
{
|
|
||||||
get => ProgressBar.Style;
|
|
||||||
set => ProgressBar.Style = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override int _progressValue
|
|
||||||
{
|
|
||||||
get => ProgressBar.Value;
|
|
||||||
set => ProgressBar.Value = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected 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 = Program.Settings.BootstrapperIcon.GetBitmap();
|
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ProgressDialogDark_Load(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
this.Activate();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,60 +0,0 @@
|
|||||||
<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>
|
|
563
Bloxstrap/Dialogs/Preferences.Designer.cs
generated
563
Bloxstrap/Dialogs/Preferences.Designer.cs
generated
@ -1,563 +0,0 @@
|
|||||||
namespace Bloxstrap.Dialogs
|
|
||||||
{
|
|
||||||
partial class Preferences
|
|
||||||
{
|
|
||||||
/// <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.components = new System.ComponentModel.Container();
|
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Preferences));
|
|
||||||
this.label1 = new System.Windows.Forms.Label();
|
|
||||||
this.Tabs = new System.Windows.Forms.TabControl();
|
|
||||||
this.DialogTab = new System.Windows.Forms.TabPage();
|
|
||||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
|
||||||
this.RFUWebsite = new System.Windows.Forms.LinkLabel();
|
|
||||||
this.ToggleRFUAutoclose = new System.Windows.Forms.CheckBox();
|
|
||||||
this.ToggleRFUEnabled = new System.Windows.Forms.CheckBox();
|
|
||||||
this.groupBox5 = new System.Windows.Forms.GroupBox();
|
|
||||||
this.ToggleRPCButtons = new System.Windows.Forms.CheckBox();
|
|
||||||
this.ToggleDiscordRichPresence = new System.Windows.Forms.CheckBox();
|
|
||||||
this.groupBox3 = new System.Windows.Forms.GroupBox();
|
|
||||||
this.IconPreview = new System.Windows.Forms.PictureBox();
|
|
||||||
this.IconSelection = new System.Windows.Forms.ListBox();
|
|
||||||
this.groupBox2 = new System.Windows.Forms.GroupBox();
|
|
||||||
this.StyleSelection = new System.Windows.Forms.ListBox();
|
|
||||||
this.InstallationTab = new System.Windows.Forms.TabPage();
|
|
||||||
this.groupBox6 = new System.Windows.Forms.GroupBox();
|
|
||||||
this.ToggleShowAllChannels = new System.Windows.Forms.CheckBox();
|
|
||||||
this.LabelChannelInfo = new System.Windows.Forms.Label();
|
|
||||||
this.SelectChannel = new System.Windows.Forms.ComboBox();
|
|
||||||
this.groupBox4 = new System.Windows.Forms.GroupBox();
|
|
||||||
this.LabelModFolderInstall = new System.Windows.Forms.Label();
|
|
||||||
this.ButtonOpenModFolder = new System.Windows.Forms.Button();
|
|
||||||
this.ToggleMouseCursor = new System.Windows.Forms.CheckBox();
|
|
||||||
this.ToggleDeathSound = new System.Windows.Forms.CheckBox();
|
|
||||||
this.GroupBoxInstallLocation = new System.Windows.Forms.GroupBox();
|
|
||||||
this.InstallLocationBrowseButton = new System.Windows.Forms.Button();
|
|
||||||
this.InstallLocation = new System.Windows.Forms.TextBox();
|
|
||||||
this.SaveButton = new System.Windows.Forms.Button();
|
|
||||||
this.panel1 = new System.Windows.Forms.Panel();
|
|
||||||
this.ToggleCheckForUpdates = new System.Windows.Forms.CheckBox();
|
|
||||||
this.PreviewButton = new System.Windows.Forms.Button();
|
|
||||||
this.InstallLocationBrowseDialog = new System.Windows.Forms.FolderBrowserDialog();
|
|
||||||
this.InfoTooltip = new System.Windows.Forms.ToolTip(this.components);
|
|
||||||
this.label2 = new System.Windows.Forms.Label();
|
|
||||||
this.Tabs.SuspendLayout();
|
|
||||||
this.DialogTab.SuspendLayout();
|
|
||||||
this.groupBox1.SuspendLayout();
|
|
||||||
this.groupBox5.SuspendLayout();
|
|
||||||
this.groupBox3.SuspendLayout();
|
|
||||||
((System.ComponentModel.ISupportInitialize)(this.IconPreview)).BeginInit();
|
|
||||||
this.groupBox2.SuspendLayout();
|
|
||||||
this.InstallationTab.SuspendLayout();
|
|
||||||
this.groupBox6.SuspendLayout();
|
|
||||||
this.groupBox4.SuspendLayout();
|
|
||||||
this.GroupBoxInstallLocation.SuspendLayout();
|
|
||||||
this.panel1.SuspendLayout();
|
|
||||||
this.SuspendLayout();
|
|
||||||
//
|
|
||||||
// label1
|
|
||||||
//
|
|
||||||
this.label1.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
|
||||||
this.label1.ForeColor = System.Drawing.Color.Navy;
|
|
||||||
this.label1.Location = new System.Drawing.Point(8, 9);
|
|
||||||
this.label1.Name = "label1";
|
|
||||||
this.label1.Size = new System.Drawing.Size(237, 23);
|
|
||||||
this.label1.TabIndex = 1;
|
|
||||||
this.label1.Text = "Configure Bloxstrap";
|
|
||||||
//
|
|
||||||
// Tabs
|
|
||||||
//
|
|
||||||
this.Tabs.Controls.Add(this.DialogTab);
|
|
||||||
this.Tabs.Controls.Add(this.InstallationTab);
|
|
||||||
this.Tabs.Location = new System.Drawing.Point(12, 62);
|
|
||||||
this.Tabs.Name = "Tabs";
|
|
||||||
this.Tabs.SelectedIndex = 0;
|
|
||||||
this.Tabs.Size = new System.Drawing.Size(442, 247);
|
|
||||||
this.Tabs.TabIndex = 2;
|
|
||||||
//
|
|
||||||
// DialogTab
|
|
||||||
//
|
|
||||||
this.DialogTab.Controls.Add(this.groupBox1);
|
|
||||||
this.DialogTab.Controls.Add(this.groupBox5);
|
|
||||||
this.DialogTab.Controls.Add(this.groupBox3);
|
|
||||||
this.DialogTab.Controls.Add(this.groupBox2);
|
|
||||||
this.DialogTab.Location = new System.Drawing.Point(4, 24);
|
|
||||||
this.DialogTab.Name = "DialogTab";
|
|
||||||
this.DialogTab.Padding = new System.Windows.Forms.Padding(3);
|
|
||||||
this.DialogTab.Size = new System.Drawing.Size(434, 219);
|
|
||||||
this.DialogTab.TabIndex = 0;
|
|
||||||
this.DialogTab.Text = "Bootstrapper";
|
|
||||||
this.DialogTab.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// groupBox1
|
|
||||||
//
|
|
||||||
this.groupBox1.Controls.Add(this.RFUWebsite);
|
|
||||||
this.groupBox1.Controls.Add(this.ToggleRFUAutoclose);
|
|
||||||
this.groupBox1.Controls.Add(this.ToggleRFUEnabled);
|
|
||||||
this.groupBox1.Location = new System.Drawing.Point(192, 146);
|
|
||||||
this.groupBox1.Name = "groupBox1";
|
|
||||||
this.groupBox1.Size = new System.Drawing.Size(235, 67);
|
|
||||||
this.groupBox1.TabIndex = 8;
|
|
||||||
this.groupBox1.TabStop = false;
|
|
||||||
this.groupBox1.Text = "FPS Unlocker";
|
|
||||||
//
|
|
||||||
// RFUWebsite
|
|
||||||
//
|
|
||||||
this.RFUWebsite.BackColor = System.Drawing.Color.White;
|
|
||||||
this.RFUWebsite.Cursor = System.Windows.Forms.Cursors.Hand;
|
|
||||||
this.RFUWebsite.LinkBehavior = System.Windows.Forms.LinkBehavior.HoverUnderline;
|
|
||||||
this.RFUWebsite.Location = new System.Drawing.Point(174, 0);
|
|
||||||
this.RFUWebsite.Margin = new System.Windows.Forms.Padding(0);
|
|
||||||
this.RFUWebsite.Name = "RFUWebsite";
|
|
||||||
this.RFUWebsite.Size = new System.Drawing.Size(55, 18);
|
|
||||||
this.RFUWebsite.TabIndex = 2;
|
|
||||||
this.RFUWebsite.TabStop = true;
|
|
||||||
this.RFUWebsite.Tag = "";
|
|
||||||
this.RFUWebsite.Text = "(website)";
|
|
||||||
this.RFUWebsite.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.RFUWebsite_LinkClicked);
|
|
||||||
//
|
|
||||||
// ToggleRFUAutoclose
|
|
||||||
//
|
|
||||||
this.ToggleRFUAutoclose.AutoSize = true;
|
|
||||||
this.ToggleRFUAutoclose.Enabled = false;
|
|
||||||
this.ToggleRFUAutoclose.Location = new System.Drawing.Point(9, 40);
|
|
||||||
this.ToggleRFUAutoclose.Name = "ToggleRFUAutoclose";
|
|
||||||
this.ToggleRFUAutoclose.Size = new System.Drawing.Size(209, 19);
|
|
||||||
this.ToggleRFUAutoclose.TabIndex = 1;
|
|
||||||
this.ToggleRFUAutoclose.Text = "Automatically close on Roblox exit";
|
|
||||||
this.InfoTooltip.SetToolTip(this.ToggleRFUAutoclose, "If enabled, rbxfpsunlocker will automatically close when Roblox is closed.");
|
|
||||||
this.ToggleRFUAutoclose.UseVisualStyleBackColor = true;
|
|
||||||
this.ToggleRFUAutoclose.CheckedChanged += new System.EventHandler(this.ToggleRFUAutoclose_CheckedChanged);
|
|
||||||
//
|
|
||||||
// ToggleRFUEnabled
|
|
||||||
//
|
|
||||||
this.ToggleRFUEnabled.AutoSize = true;
|
|
||||||
this.ToggleRFUEnabled.Location = new System.Drawing.Point(9, 19);
|
|
||||||
this.ToggleRFUEnabled.Name = "ToggleRFUEnabled";
|
|
||||||
this.ToggleRFUEnabled.Size = new System.Drawing.Size(127, 19);
|
|
||||||
this.ToggleRFUEnabled.TabIndex = 0;
|
|
||||||
this.ToggleRFUEnabled.Text = "Use rbxfpsunlocker";
|
|
||||||
this.InfoTooltip.SetToolTip(this.ToggleRFUEnabled, "If enabled, rbxfpsunlocker is downloaded.\r\nWhen Roblox is started, rbxfpsunlocker" +
|
|
||||||
" will automatically start too, \r\nbeing minimized to your system tray by default." +
|
|
||||||
"");
|
|
||||||
this.ToggleRFUEnabled.UseVisualStyleBackColor = true;
|
|
||||||
this.ToggleRFUEnabled.CheckedChanged += new System.EventHandler(this.ToggleRFUEnabled_CheckedChanged);
|
|
||||||
//
|
|
||||||
// groupBox5
|
|
||||||
//
|
|
||||||
this.groupBox5.Controls.Add(this.ToggleRPCButtons);
|
|
||||||
this.groupBox5.Controls.Add(this.ToggleDiscordRichPresence);
|
|
||||||
this.groupBox5.Location = new System.Drawing.Point(5, 146);
|
|
||||||
this.groupBox5.Name = "groupBox5";
|
|
||||||
this.groupBox5.Size = new System.Drawing.Size(179, 67);
|
|
||||||
this.groupBox5.TabIndex = 7;
|
|
||||||
this.groupBox5.TabStop = false;
|
|
||||||
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(155, 19);
|
|
||||||
this.ToggleRPCButtons.TabIndex = 1;
|
|
||||||
this.ToggleRPCButtons.Text = "Hide interaction buttons";
|
|
||||||
this.InfoTooltip.SetToolTip(this.ToggleRPCButtons, "Choose whether the buttons to play/view game details should be hidden from your a" +
|
|
||||||
"ctivity status.");
|
|
||||||
this.ToggleRPCButtons.UseVisualStyleBackColor = true;
|
|
||||||
this.ToggleRPCButtons.CheckedChanged += new System.EventHandler(this.ToggleRPCButtons_CheckedChanged);
|
|
||||||
//
|
|
||||||
// ToggleDiscordRichPresence
|
|
||||||
//
|
|
||||||
this.ToggleDiscordRichPresence.AutoSize = true;
|
|
||||||
this.ToggleDiscordRichPresence.Checked = true;
|
|
||||||
this.ToggleDiscordRichPresence.CheckState = System.Windows.Forms.CheckState.Checked;
|
|
||||||
this.ToggleDiscordRichPresence.Location = new System.Drawing.Point(9, 19);
|
|
||||||
this.ToggleDiscordRichPresence.Name = "ToggleDiscordRichPresence";
|
|
||||||
this.ToggleDiscordRichPresence.Size = new System.Drawing.Size(129, 19);
|
|
||||||
this.ToggleDiscordRichPresence.TabIndex = 0;
|
|
||||||
this.ToggleDiscordRichPresence.Text = "Show game activity";
|
|
||||||
this.InfoTooltip.SetToolTip(this.ToggleDiscordRichPresence, "Choose whether to show what game you\'re playing on your Discord activity status.\r" +
|
|
||||||
"\nThis will only work when you launch a game from the website, and is not support" +
|
|
||||||
"ed in the Beta App.");
|
|
||||||
this.ToggleDiscordRichPresence.UseVisualStyleBackColor = true;
|
|
||||||
this.ToggleDiscordRichPresence.CheckedChanged += new System.EventHandler(this.ToggleDiscordRichPresence_CheckedChanged);
|
|
||||||
//
|
|
||||||
// groupBox3
|
|
||||||
//
|
|
||||||
this.groupBox3.Controls.Add(this.IconPreview);
|
|
||||||
this.groupBox3.Controls.Add(this.IconSelection);
|
|
||||||
this.groupBox3.Location = new System.Drawing.Point(192, 3);
|
|
||||||
this.groupBox3.Name = "groupBox3";
|
|
||||||
this.groupBox3.Size = new System.Drawing.Size(235, 140);
|
|
||||||
this.groupBox3.TabIndex = 6;
|
|
||||||
this.groupBox3.TabStop = false;
|
|
||||||
this.groupBox3.Text = "Icon";
|
|
||||||
//
|
|
||||||
// IconPreview
|
|
||||||
//
|
|
||||||
this.IconPreview.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
|
|
||||||
this.IconPreview.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
|
||||||
this.IconPreview.Location = new System.Drawing.Point(117, 21);
|
|
||||||
this.IconPreview.Name = "IconPreview";
|
|
||||||
this.IconPreview.Size = new System.Drawing.Size(109, 109);
|
|
||||||
this.IconPreview.TabIndex = 3;
|
|
||||||
this.IconPreview.TabStop = false;
|
|
||||||
//
|
|
||||||
// IconSelection
|
|
||||||
//
|
|
||||||
this.IconSelection.FormattingEnabled = true;
|
|
||||||
this.IconSelection.ItemHeight = 15;
|
|
||||||
this.IconSelection.Location = new System.Drawing.Point(9, 21);
|
|
||||||
this.IconSelection.Name = "IconSelection";
|
|
||||||
this.IconSelection.Size = new System.Drawing.Size(100, 109);
|
|
||||||
this.IconSelection.TabIndex = 4;
|
|
||||||
this.InfoTooltip.SetToolTip(this.IconSelection, "Choose what icon the bootstrapper should use.");
|
|
||||||
this.IconSelection.SelectedIndexChanged += new System.EventHandler(this.IconSelection_SelectedIndexChanged);
|
|
||||||
//
|
|
||||||
// groupBox2
|
|
||||||
//
|
|
||||||
this.groupBox2.Controls.Add(this.StyleSelection);
|
|
||||||
this.groupBox2.Location = new System.Drawing.Point(5, 3);
|
|
||||||
this.groupBox2.Name = "groupBox2";
|
|
||||||
this.groupBox2.Size = new System.Drawing.Size(179, 140);
|
|
||||||
this.groupBox2.TabIndex = 5;
|
|
||||||
this.groupBox2.TabStop = false;
|
|
||||||
this.groupBox2.Text = "Style";
|
|
||||||
//
|
|
||||||
// StyleSelection
|
|
||||||
//
|
|
||||||
this.StyleSelection.FormattingEnabled = true;
|
|
||||||
this.StyleSelection.ItemHeight = 15;
|
|
||||||
this.StyleSelection.Location = new System.Drawing.Point(9, 21);
|
|
||||||
this.StyleSelection.Name = "StyleSelection";
|
|
||||||
this.StyleSelection.Size = new System.Drawing.Size(161, 109);
|
|
||||||
this.StyleSelection.TabIndex = 3;
|
|
||||||
this.InfoTooltip.SetToolTip(this.StyleSelection, "Choose how the bootstrapper dialog should look.\r\nYou can use the \'Preview\' button" +
|
|
||||||
" to preview the bootstrapper look.");
|
|
||||||
this.StyleSelection.SelectedIndexChanged += new System.EventHandler(this.StyleSelection_SelectedIndexChanged);
|
|
||||||
//
|
|
||||||
// InstallationTab
|
|
||||||
//
|
|
||||||
this.InstallationTab.Controls.Add(this.groupBox6);
|
|
||||||
this.InstallationTab.Controls.Add(this.groupBox4);
|
|
||||||
this.InstallationTab.Controls.Add(this.GroupBoxInstallLocation);
|
|
||||||
this.InstallationTab.Location = new System.Drawing.Point(4, 24);
|
|
||||||
this.InstallationTab.Name = "InstallationTab";
|
|
||||||
this.InstallationTab.Padding = new System.Windows.Forms.Padding(3);
|
|
||||||
this.InstallationTab.Size = new System.Drawing.Size(434, 219);
|
|
||||||
this.InstallationTab.TabIndex = 2;
|
|
||||||
this.InstallationTab.Text = "Installation";
|
|
||||||
this.InstallationTab.UseVisualStyleBackColor = true;
|
|
||||||
//
|
|
||||||
// groupBox6
|
|
||||||
//
|
|
||||||
this.groupBox6.Controls.Add(this.ToggleShowAllChannels);
|
|
||||||
this.groupBox6.Controls.Add(this.LabelChannelInfo);
|
|
||||||
this.groupBox6.Controls.Add(this.SelectChannel);
|
|
||||||
this.groupBox6.Location = new System.Drawing.Point(5, 158);
|
|
||||||
this.groupBox6.Name = "groupBox6";
|
|
||||||
this.groupBox6.Size = new System.Drawing.Size(422, 56);
|
|
||||||
this.groupBox6.TabIndex = 3;
|
|
||||||
this.groupBox6.TabStop = false;
|
|
||||||
this.groupBox6.Text = "Build Channel";
|
|
||||||
//
|
|
||||||
// ToggleShowAllChannels
|
|
||||||
//
|
|
||||||
this.ToggleShowAllChannels.AutoSize = true;
|
|
||||||
this.ToggleShowAllChannels.BackColor = System.Drawing.Color.White;
|
|
||||||
this.ToggleShowAllChannels.Location = new System.Drawing.Point(289, 0);
|
|
||||||
this.ToggleShowAllChannels.Name = "ToggleShowAllChannels";
|
|
||||||
this.ToggleShowAllChannels.Padding = new System.Windows.Forms.Padding(7, 0, 0, 0);
|
|
||||||
this.ToggleShowAllChannels.Size = new System.Drawing.Size(127, 19);
|
|
||||||
this.ToggleShowAllChannels.TabIndex = 2;
|
|
||||||
this.ToggleShowAllChannels.Text = "Show all channels";
|
|
||||||
this.ToggleShowAllChannels.UseVisualStyleBackColor = false;
|
|
||||||
this.ToggleShowAllChannels.CheckedChanged += new System.EventHandler(this.ToggleShowAllChannels_CheckedChanged);
|
|
||||||
//
|
|
||||||
// LabelChannelInfo
|
|
||||||
//
|
|
||||||
this.LabelChannelInfo.Location = new System.Drawing.Point(134, 18);
|
|
||||||
this.LabelChannelInfo.Name = "LabelChannelInfo";
|
|
||||||
this.LabelChannelInfo.Size = new System.Drawing.Size(282, 28);
|
|
||||||
this.LabelChannelInfo.TabIndex = 1;
|
|
||||||
this.LabelChannelInfo.Text = "Getting latest deploy, please wait...";
|
|
||||||
this.LabelChannelInfo.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
|
||||||
//
|
|
||||||
// SelectChannel
|
|
||||||
//
|
|
||||||
this.SelectChannel.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
|
||||||
this.SelectChannel.DropDownWidth = 265;
|
|
||||||
this.SelectChannel.FormattingEnabled = true;
|
|
||||||
this.SelectChannel.Location = new System.Drawing.Point(9, 21);
|
|
||||||
this.SelectChannel.Name = "SelectChannel";
|
|
||||||
this.SelectChannel.Size = new System.Drawing.Size(120, 23);
|
|
||||||
this.SelectChannel.TabIndex = 0;
|
|
||||||
this.InfoTooltip.SetToolTip(this.SelectChannel, resources.GetString("SelectChannel.ToolTip"));
|
|
||||||
this.SelectChannel.SelectedValueChanged += new System.EventHandler(this.SelectChannel_SelectedValueChanged);
|
|
||||||
//
|
|
||||||
// groupBox4
|
|
||||||
//
|
|
||||||
this.groupBox4.Controls.Add(this.LabelModFolderInstall);
|
|
||||||
this.groupBox4.Controls.Add(this.ButtonOpenModFolder);
|
|
||||||
this.groupBox4.Controls.Add(this.ToggleMouseCursor);
|
|
||||||
this.groupBox4.Controls.Add(this.ToggleDeathSound);
|
|
||||||
this.groupBox4.Location = new System.Drawing.Point(5, 60);
|
|
||||||
this.groupBox4.Name = "groupBox4";
|
|
||||||
this.groupBox4.Size = new System.Drawing.Size(422, 95);
|
|
||||||
this.groupBox4.TabIndex = 2;
|
|
||||||
this.groupBox4.TabStop = false;
|
|
||||||
this.groupBox4.Text = "Modifications";
|
|
||||||
//
|
|
||||||
// LabelModFolderInstall
|
|
||||||
//
|
|
||||||
this.LabelModFolderInstall.AutoSize = true;
|
|
||||||
this.LabelModFolderInstall.Location = new System.Drawing.Point(6, 67);
|
|
||||||
this.LabelModFolderInstall.Margin = new System.Windows.Forms.Padding(0);
|
|
||||||
this.LabelModFolderInstall.Name = "LabelModFolderInstall";
|
|
||||||
this.LabelModFolderInstall.Size = new System.Drawing.Size(329, 15);
|
|
||||||
this.LabelModFolderInstall.TabIndex = 7;
|
|
||||||
this.LabelModFolderInstall.Text = "Other modifications can be added once Bloxstrap is installed.";
|
|
||||||
this.LabelModFolderInstall.Visible = false;
|
|
||||||
//
|
|
||||||
// ButtonOpenModFolder
|
|
||||||
//
|
|
||||||
this.ButtonOpenModFolder.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
|
||||||
this.ButtonOpenModFolder.Location = new System.Drawing.Point(8, 62);
|
|
||||||
this.ButtonOpenModFolder.Name = "ButtonOpenModFolder";
|
|
||||||
this.ButtonOpenModFolder.Size = new System.Drawing.Size(122, 25);
|
|
||||||
this.ButtonOpenModFolder.TabIndex = 6;
|
|
||||||
this.ButtonOpenModFolder.Text = "Open Mod Folder";
|
|
||||||
this.InfoTooltip.SetToolTip(this.ButtonOpenModFolder, "Open the folder for applying Roblox client modifications.");
|
|
||||||
this.ButtonOpenModFolder.UseVisualStyleBackColor = true;
|
|
||||||
this.ButtonOpenModFolder.Click += new System.EventHandler(this.ButtonOpenModFolder_Click);
|
|
||||||
//
|
|
||||||
// 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
|
|
||||||
//
|
|
||||||
this.ToggleDeathSound.AutoSize = true;
|
|
||||||
this.ToggleDeathSound.Checked = true;
|
|
||||||
this.ToggleDeathSound.CheckState = System.Windows.Forms.CheckState.Checked;
|
|
||||||
this.ToggleDeathSound.Location = new System.Drawing.Point(9, 19);
|
|
||||||
this.ToggleDeathSound.Margin = new System.Windows.Forms.Padding(2);
|
|
||||||
this.ToggleDeathSound.Name = "ToggleDeathSound";
|
|
||||||
this.ToggleDeathSound.Size = new System.Drawing.Size(134, 19);
|
|
||||||
this.ToggleDeathSound.TabIndex = 1;
|
|
||||||
this.ToggleDeathSound.Text = "Use old death sound";
|
|
||||||
this.ToggleDeathSound.UseVisualStyleBackColor = true;
|
|
||||||
this.ToggleDeathSound.CheckedChanged += new System.EventHandler(this.ToggleDeathSound_CheckedChanged);
|
|
||||||
//
|
|
||||||
// GroupBoxInstallLocation
|
|
||||||
//
|
|
||||||
this.GroupBoxInstallLocation.Controls.Add(this.InstallLocationBrowseButton);
|
|
||||||
this.GroupBoxInstallLocation.Controls.Add(this.InstallLocation);
|
|
||||||
this.GroupBoxInstallLocation.Location = new System.Drawing.Point(5, 3);
|
|
||||||
this.GroupBoxInstallLocation.Name = "GroupBoxInstallLocation";
|
|
||||||
this.GroupBoxInstallLocation.Size = new System.Drawing.Size(422, 54);
|
|
||||||
this.GroupBoxInstallLocation.TabIndex = 0;
|
|
||||||
this.GroupBoxInstallLocation.TabStop = false;
|
|
||||||
this.GroupBoxInstallLocation.Text = "Location";
|
|
||||||
//
|
|
||||||
// InstallLocationBrowseButton
|
|
||||||
//
|
|
||||||
this.InstallLocationBrowseButton.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
|
||||||
this.InstallLocationBrowseButton.Location = new System.Drawing.Point(335, 20);
|
|
||||||
this.InstallLocationBrowseButton.Name = "InstallLocationBrowseButton";
|
|
||||||
this.InstallLocationBrowseButton.Size = new System.Drawing.Size(79, 25);
|
|
||||||
this.InstallLocationBrowseButton.TabIndex = 5;
|
|
||||||
this.InstallLocationBrowseButton.Text = "Browse...";
|
|
||||||
this.InstallLocationBrowseButton.UseVisualStyleBackColor = true;
|
|
||||||
this.InstallLocationBrowseButton.Click += new System.EventHandler(this.InstallLocationBrowseButton_Click);
|
|
||||||
//
|
|
||||||
// InstallLocation
|
|
||||||
//
|
|
||||||
this.InstallLocation.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
|
||||||
this.InstallLocation.Location = new System.Drawing.Point(9, 21);
|
|
||||||
this.InstallLocation.MaxLength = 255;
|
|
||||||
this.InstallLocation.Name = "InstallLocation";
|
|
||||||
this.InstallLocation.Size = new System.Drawing.Size(319, 23);
|
|
||||||
this.InstallLocation.TabIndex = 4;
|
|
||||||
this.InfoTooltip.SetToolTip(this.InstallLocation, "Choose where Bloxstrap should install to.\r\nThis is useful if you typically instal" +
|
|
||||||
"l all your games to a separate storage drive.");
|
|
||||||
//
|
|
||||||
// SaveButton
|
|
||||||
//
|
|
||||||
this.SaveButton.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
|
||||||
this.SaveButton.Location = new System.Drawing.Point(380, 9);
|
|
||||||
this.SaveButton.Name = "SaveButton";
|
|
||||||
this.SaveButton.Size = new System.Drawing.Size(73, 23);
|
|
||||||
this.SaveButton.TabIndex = 6;
|
|
||||||
this.SaveButton.Text = "Save";
|
|
||||||
this.SaveButton.UseVisualStyleBackColor = true;
|
|
||||||
this.SaveButton.Click += new System.EventHandler(this.SaveButton_Click);
|
|
||||||
//
|
|
||||||
// panel1
|
|
||||||
//
|
|
||||||
this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
|
|
||||||
| System.Windows.Forms.AnchorStyles.Right)));
|
|
||||||
this.panel1.BackColor = System.Drawing.SystemColors.Control;
|
|
||||||
this.panel1.Controls.Add(this.ToggleCheckForUpdates);
|
|
||||||
this.panel1.Controls.Add(this.PreviewButton);
|
|
||||||
this.panel1.Controls.Add(this.SaveButton);
|
|
||||||
this.panel1.Location = new System.Drawing.Point(-1, 320);
|
|
||||||
this.panel1.Name = "panel1";
|
|
||||||
this.panel1.Size = new System.Drawing.Size(466, 42);
|
|
||||||
this.panel1.TabIndex = 6;
|
|
||||||
//
|
|
||||||
// ToggleCheckForUpdates
|
|
||||||
//
|
|
||||||
this.ToggleCheckForUpdates.AutoSize = true;
|
|
||||||
this.ToggleCheckForUpdates.Checked = true;
|
|
||||||
this.ToggleCheckForUpdates.CheckState = System.Windows.Forms.CheckState.Checked;
|
|
||||||
this.ToggleCheckForUpdates.Location = new System.Drawing.Point(14, 12);
|
|
||||||
this.ToggleCheckForUpdates.Name = "ToggleCheckForUpdates";
|
|
||||||
this.ToggleCheckForUpdates.Size = new System.Drawing.Size(179, 19);
|
|
||||||
this.ToggleCheckForUpdates.TabIndex = 7;
|
|
||||||
this.ToggleCheckForUpdates.Text = "Check for updates on startup";
|
|
||||||
this.ToggleCheckForUpdates.UseVisualStyleBackColor = true;
|
|
||||||
this.ToggleCheckForUpdates.CheckedChanged += new System.EventHandler(this.ToggleCheckForUpdates_CheckedChanged);
|
|
||||||
//
|
|
||||||
// PreviewButton
|
|
||||||
//
|
|
||||||
this.PreviewButton.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
|
|
||||||
this.PreviewButton.Location = new System.Drawing.Point(297, 9);
|
|
||||||
this.PreviewButton.Name = "PreviewButton";
|
|
||||||
this.PreviewButton.Size = new System.Drawing.Size(73, 23);
|
|
||||||
this.PreviewButton.TabIndex = 5;
|
|
||||||
this.PreviewButton.Text = "Preview";
|
|
||||||
this.PreviewButton.UseVisualStyleBackColor = true;
|
|
||||||
this.PreviewButton.Click += new System.EventHandler(this.PreviewButton_Click);
|
|
||||||
//
|
|
||||||
// InfoTooltip
|
|
||||||
//
|
|
||||||
this.InfoTooltip.AutomaticDelay = 0;
|
|
||||||
this.InfoTooltip.AutoPopDelay = 16000;
|
|
||||||
this.InfoTooltip.InitialDelay = 500;
|
|
||||||
this.InfoTooltip.ReshowDelay = 82;
|
|
||||||
this.InfoTooltip.ShowAlways = true;
|
|
||||||
this.InfoTooltip.ToolTipIcon = System.Windows.Forms.ToolTipIcon.Info;
|
|
||||||
this.InfoTooltip.ToolTipTitle = "Information";
|
|
||||||
//
|
|
||||||
// label2
|
|
||||||
//
|
|
||||||
this.label2.AutoSize = true;
|
|
||||||
this.label2.Location = new System.Drawing.Point(9, 35);
|
|
||||||
this.label2.Name = "label2";
|
|
||||||
this.label2.Size = new System.Drawing.Size(234, 15);
|
|
||||||
this.label2.TabIndex = 7;
|
|
||||||
this.label2.Text = "Hover over an option for more information";
|
|
||||||
//
|
|
||||||
// Preferences
|
|
||||||
//
|
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
|
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
|
||||||
this.BackColor = System.Drawing.SystemColors.Window;
|
|
||||||
this.ClientSize = new System.Drawing.Size(464, 361);
|
|
||||||
this.Controls.Add(this.label2);
|
|
||||||
this.Controls.Add(this.panel1);
|
|
||||||
this.Controls.Add(this.Tabs);
|
|
||||||
this.Controls.Add(this.label1);
|
|
||||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
|
||||||
this.MaximizeBox = false;
|
|
||||||
this.MinimizeBox = false;
|
|
||||||
this.Name = "Preferences";
|
|
||||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
|
||||||
this.Text = "Preferences";
|
|
||||||
this.Load += new System.EventHandler(this.Preferences_Load);
|
|
||||||
this.Tabs.ResumeLayout(false);
|
|
||||||
this.DialogTab.ResumeLayout(false);
|
|
||||||
this.groupBox1.ResumeLayout(false);
|
|
||||||
this.groupBox1.PerformLayout();
|
|
||||||
this.groupBox5.ResumeLayout(false);
|
|
||||||
this.groupBox5.PerformLayout();
|
|
||||||
this.groupBox3.ResumeLayout(false);
|
|
||||||
((System.ComponentModel.ISupportInitialize)(this.IconPreview)).EndInit();
|
|
||||||
this.groupBox2.ResumeLayout(false);
|
|
||||||
this.InstallationTab.ResumeLayout(false);
|
|
||||||
this.groupBox6.ResumeLayout(false);
|
|
||||||
this.groupBox6.PerformLayout();
|
|
||||||
this.groupBox4.ResumeLayout(false);
|
|
||||||
this.groupBox4.PerformLayout();
|
|
||||||
this.GroupBoxInstallLocation.ResumeLayout(false);
|
|
||||||
this.GroupBoxInstallLocation.PerformLayout();
|
|
||||||
this.panel1.ResumeLayout(false);
|
|
||||||
this.panel1.PerformLayout();
|
|
||||||
this.ResumeLayout(false);
|
|
||||||
this.PerformLayout();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
private Label label1;
|
|
||||||
private TabControl Tabs;
|
|
||||||
private TabPage DialogTab;
|
|
||||||
private TabPage InstallationTab;
|
|
||||||
private Button SaveButton;
|
|
||||||
private Panel panel1;
|
|
||||||
private ListBox StyleSelection;
|
|
||||||
private GroupBox GroupBoxInstallLocation;
|
|
||||||
private Button InstallLocationBrowseButton;
|
|
||||||
private TextBox InstallLocation;
|
|
||||||
private FolderBrowserDialog InstallLocationBrowseDialog;
|
|
||||||
private GroupBox groupBox2;
|
|
||||||
private GroupBox groupBox3;
|
|
||||||
private PictureBox IconPreview;
|
|
||||||
private ListBox IconSelection;
|
|
||||||
private Button PreviewButton;
|
|
||||||
private CheckBox ToggleDeathSound;
|
|
||||||
private GroupBox groupBox4;
|
|
||||||
private GroupBox groupBox5;
|
|
||||||
private CheckBox ToggleDiscordRichPresence;
|
|
||||||
private ToolTip InfoTooltip;
|
|
||||||
private CheckBox ToggleMouseCursor;
|
|
||||||
private CheckBox ToggleRPCButtons;
|
|
||||||
private GroupBox groupBox1;
|
|
||||||
private LinkLabel RFUWebsite;
|
|
||||||
private CheckBox ToggleRFUAutoclose;
|
|
||||||
private CheckBox ToggleRFUEnabled;
|
|
||||||
private CheckBox ToggleCheckForUpdates;
|
|
||||||
private Button ButtonOpenModFolder;
|
|
||||||
private Label LabelModFolderInstall;
|
|
||||||
private GroupBox groupBox6;
|
|
||||||
private ComboBox SelectChannel;
|
|
||||||
private Label LabelChannelInfo;
|
|
||||||
private CheckBox ToggleShowAllChannels;
|
|
||||||
private Label label2;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,297 +0,0 @@
|
|||||||
using System.IO;
|
|
||||||
using System.Diagnostics;
|
|
||||||
|
|
||||||
using Microsoft.Win32;
|
|
||||||
|
|
||||||
using Bloxstrap.Enums;
|
|
||||||
using Bloxstrap.Helpers;
|
|
||||||
using Bloxstrap.Helpers.Integrations;
|
|
||||||
using Bloxstrap.Models;
|
|
||||||
|
|
||||||
namespace Bloxstrap.Dialogs
|
|
||||||
{
|
|
||||||
public partial class Preferences : Form
|
|
||||||
{
|
|
||||||
#region Properties
|
|
||||||
private static readonly IReadOnlyDictionary<string, BootstrapperStyle> SelectableStyles = new Dictionary<string, BootstrapperStyle>()
|
|
||||||
{
|
|
||||||
{ "Vista (2009 - 2011)", BootstrapperStyle.VistaDialog },
|
|
||||||
{ "Legacy (2009 - 2011)", BootstrapperStyle.LegacyDialog2009 },
|
|
||||||
{ "Legacy (2011 - 2014)", BootstrapperStyle.LegacyDialog2011 },
|
|
||||||
{ "Progress (~2014)", BootstrapperStyle.ProgressDialog },
|
|
||||||
{ "Progress (Dark)", BootstrapperStyle.ProgressDialogDark },
|
|
||||||
};
|
|
||||||
|
|
||||||
private static readonly IReadOnlyDictionary<string, BootstrapperIcon> SelectableIcons = new Dictionary<string, BootstrapperIcon>()
|
|
||||||
{
|
|
||||||
{ "Bloxstrap", BootstrapperIcon.IconBloxstrap },
|
|
||||||
{ "2009", BootstrapperIcon.Icon2009 },
|
|
||||||
{ "2011", BootstrapperIcon.Icon2011 },
|
|
||||||
{ "2015", BootstrapperIcon.IconEarly2015 },
|
|
||||||
{ "2016", BootstrapperIcon.IconLate2015 },
|
|
||||||
{ "2017", BootstrapperIcon.Icon2017 },
|
|
||||||
{ "2019", BootstrapperIcon.Icon2019 },
|
|
||||||
{ "2022", BootstrapperIcon.Icon2022 }
|
|
||||||
};
|
|
||||||
|
|
||||||
private string ChannelInfo
|
|
||||||
{
|
|
||||||
set
|
|
||||||
{
|
|
||||||
if (this.InvokeRequired)
|
|
||||||
{
|
|
||||||
this.Invoke(() => this.LabelChannelInfo.Text = value);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
this.LabelChannelInfo.Text = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Core
|
|
||||||
private async Task GetChannelInfo(string channel)
|
|
||||||
{
|
|
||||||
ChannelInfo = "Getting latest version, please wait...";
|
|
||||||
|
|
||||||
VersionDeploy info = await DeployManager.GetLastDeploy(channel);
|
|
||||||
|
|
||||||
if (info.FileVersion is null || info.Timestamp is null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
string strTimestamp = info.Timestamp.Value.ToString("MM/dd/yyyy h:mm:ss tt", Program.CultureFormat);
|
|
||||||
|
|
||||||
ChannelInfo = $"Latest version:\nv{info.FileVersion} @ {strTimestamp}";
|
|
||||||
}
|
|
||||||
|
|
||||||
public Preferences()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
|
|
||||||
Program.SettingsManager.ShouldSave = false;
|
|
||||||
|
|
||||||
this.Icon = Properties.Resources.IconBloxstrap_ico;
|
|
||||||
this.Text = Program.ProjectName;
|
|
||||||
|
|
||||||
if (Program.IsFirstRun)
|
|
||||||
{
|
|
||||||
this.SaveButton.Text = "Install";
|
|
||||||
this.InstallLocation.Text = Path.Combine(Program.LocalAppData, Program.ProjectName);
|
|
||||||
this.ButtonOpenModFolder.Visible = false;
|
|
||||||
this.LabelModFolderInstall.Visible = true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
this.InstallLocation.Text = Program.BaseDirectory;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!Environment.Is64BitOperatingSystem)
|
|
||||||
this.ToggleRFUEnabled.Enabled = false;
|
|
||||||
|
|
||||||
// set data sources for list controls
|
|
||||||
this.StyleSelection.DataSource = SelectableStyles.Keys.ToList();
|
|
||||||
this.IconSelection.DataSource = SelectableIcons.Keys.ToList();
|
|
||||||
|
|
||||||
if (DeployManager.ChannelsAbstracted.Contains(Program.Settings.Channel))
|
|
||||||
this.SelectChannel.DataSource = DeployManager.ChannelsAbstracted;
|
|
||||||
else
|
|
||||||
this.ToggleShowAllChannels.Checked = true;
|
|
||||||
|
|
||||||
// populate preferences
|
|
||||||
this.StyleSelection.Text = SelectableStyles.FirstOrDefault(x => x.Value == Program.Settings.BootstrapperStyle).Key;
|
|
||||||
this.IconSelection.Text = SelectableIcons.FirstOrDefault(x => x.Value == Program.Settings.BootstrapperIcon).Key;
|
|
||||||
|
|
||||||
this.ToggleCheckForUpdates.Checked = Program.Settings.CheckForUpdates;
|
|
||||||
|
|
||||||
this.ToggleDiscordRichPresence.Checked = Program.Settings.UseDiscordRichPresence;
|
|
||||||
this.ToggleRPCButtons.Checked = Program.Settings.HideRPCButtons;
|
|
||||||
|
|
||||||
this.ToggleRFUEnabled.Checked = Program.Settings.RFUEnabled;
|
|
||||||
this.ToggleRFUAutoclose.Checked = Program.Settings.RFUAutoclose;
|
|
||||||
|
|
||||||
this.ToggleDeathSound.Checked = Program.Settings.UseOldDeathSound;
|
|
||||||
this.ToggleMouseCursor.Checked = Program.Settings.UseOldMouseCursor;
|
|
||||||
|
|
||||||
this.SelectChannel.Text = Program.Settings.Channel;
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Dialog Events
|
|
||||||
private void ToggleShowAllChannels_CheckedChanged(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (this.ToggleShowAllChannels.Checked)
|
|
||||||
this.SelectChannel.DataSource = DeployManager.ChannelsAll;
|
|
||||||
else
|
|
||||||
this.SelectChannel.DataSource = DeployManager.ChannelsAbstracted;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private void SaveButton_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
string installLocation = this.InstallLocation.Text;
|
|
||||||
|
|
||||||
if (String.IsNullOrEmpty(installLocation))
|
|
||||||
{
|
|
||||||
Program.ShowMessageBox("You must set an install location", MessageBoxIcon.Error);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
// check if we can write to the directory (a bit hacky but eh)
|
|
||||||
|
|
||||||
string testPath = installLocation;
|
|
||||||
string testFile = Path.Combine(installLocation, "BloxstrapWriteTest.txt");
|
|
||||||
bool testPathExists = Directory.Exists(testPath);
|
|
||||||
|
|
||||||
if (!testPathExists)
|
|
||||||
Directory.CreateDirectory(testPath);
|
|
||||||
|
|
||||||
File.WriteAllText(testFile, "hi");
|
|
||||||
File.Delete(testFile);
|
|
||||||
|
|
||||||
if (!testPathExists)
|
|
||||||
Directory.Delete(testPath);
|
|
||||||
}
|
|
||||||
catch (UnauthorizedAccessException)
|
|
||||||
{
|
|
||||||
Program.ShowMessageBox($"{Program.ProjectName} does not have write access to the install location you selected. Please choose another install location.", MessageBoxIcon.Error);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Program.ShowMessageBox(ex.Message, MessageBoxIcon.Error);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Program.IsFirstRun)
|
|
||||||
{
|
|
||||||
// this will be set in the registry after first install
|
|
||||||
Program.BaseDirectory = installLocation;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Program.SettingsManager.ShouldSave = true;
|
|
||||||
|
|
||||||
if (Program.BaseDirectory is not null && Program.BaseDirectory != installLocation)
|
|
||||||
{
|
|
||||||
Program.ShowMessageBox($"{Program.ProjectName} will install to the new location you've set the next time it runs.", MessageBoxIcon.Information);
|
|
||||||
|
|
||||||
Program.Settings.VersionGuid = "";
|
|
||||||
|
|
||||||
using (RegistryKey registryKey = Registry.CurrentUser.CreateSubKey($@"Software\{Program.ProjectName}"))
|
|
||||||
{
|
|
||||||
registryKey.SetValue("InstallLocation", installLocation);
|
|
||||||
registryKey.SetValue("OldInstallLocation", Program.BaseDirectory);
|
|
||||||
}
|
|
||||||
|
|
||||||
// preserve settings
|
|
||||||
// we don't need to copy the bootstrapper over since the install process will do that automatically
|
|
||||||
|
|
||||||
Program.SettingsManager.Save();
|
|
||||||
|
|
||||||
File.Copy(Path.Combine(Program.BaseDirectory, "Settings.json"), Path.Combine(installLocation, "Settings.json"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.Close();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void PreviewButton_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
this.Visible = false;
|
|
||||||
Program.Settings.BootstrapperStyle.Show();
|
|
||||||
this.Visible = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Preferences_Load(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
this.Activate();
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Preference Events
|
|
||||||
private void StyleSelection_SelectedIndexChanged(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (!this.Visible)
|
|
||||||
return;
|
|
||||||
|
|
||||||
Program.Settings.BootstrapperStyle = SelectableStyles[this.StyleSelection.Text];
|
|
||||||
}
|
|
||||||
|
|
||||||
private void IconSelection_SelectedIndexChanged(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
BootstrapperIcon icon = SelectableIcons[this.IconSelection.Text];
|
|
||||||
|
|
||||||
this.IconPreview.BackgroundImage = icon.GetBitmap();
|
|
||||||
|
|
||||||
if (!this.Visible)
|
|
||||||
return;
|
|
||||||
|
|
||||||
Program.Settings.BootstrapperIcon = icon;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ToggleDiscordRichPresence_CheckedChanged(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
Program.Settings.UseDiscordRichPresence = this.ToggleRPCButtons.Enabled = this.ToggleDiscordRichPresence.Checked;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ToggleRPCButtons_CheckedChanged(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
Program.Settings.HideRPCButtons = this.ToggleRPCButtons.Checked;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void RFUWebsite_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
|
||||||
{
|
|
||||||
Utilities.OpenWebsite($"https://github.com/{RbxFpsUnlocker.ProjectRepository}");
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ToggleRFUEnabled_CheckedChanged(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
Program.Settings.RFUEnabled = this.ToggleRFUAutoclose.Enabled = this.ToggleRFUEnabled.Checked;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ToggleRFUAutoclose_CheckedChanged(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
Program.Settings.RFUAutoclose = this.ToggleRFUAutoclose.Checked;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void InstallLocationBrowseButton_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
DialogResult result = this.InstallLocationBrowseDialog.ShowDialog();
|
|
||||||
|
|
||||||
if (result == DialogResult.OK)
|
|
||||||
this.InstallLocation.Text = this.InstallLocationBrowseDialog.SelectedPath;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ToggleDeathSound_CheckedChanged(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
Program.Settings.UseOldDeathSound = this.ToggleDeathSound.Checked;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ToggleMouseCursor_CheckedChanged(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
Program.Settings.UseOldMouseCursor = this.ToggleMouseCursor.Checked;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ButtonOpenModFolder_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
Process.Start("explorer.exe", Directories.Modifications);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void SelectChannel_SelectedValueChanged(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (this.Visible)
|
|
||||||
Program.Settings.Channel = this.SelectChannel.Text;
|
|
||||||
|
|
||||||
Task.Run(() => GetChannelInfo(Program.Settings.Channel));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ToggleCheckForUpdates_CheckedChanged(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
Program.Settings.CheckForUpdates = this.ToggleCheckForUpdates.Checked;
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,77 +0,0 @@
|
|||||||
<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>
|
|
||||||
<metadata name="InfoTooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
|
||||||
<value>222, 17</value>
|
|
||||||
</metadata>
|
|
||||||
<data name="SelectChannel.ToolTip" xml:space="preserve">
|
|
||||||
<value>Choose what build channel to install Roblox from.
|
|
||||||
You really shouldn't change this if you don't have to.
|
|
||||||
|
|
||||||
Channels to note:
|
|
||||||
The default channel is LIVE.
|
|
||||||
ZCanary is equivalent to sitetest1.
|
|
||||||
ZIntegration is equivalent to sitetest2.
|
|
||||||
|
|
||||||
</value>
|
|
||||||
</data>
|
|
||||||
<metadata name="InstallLocationBrowseDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
|
||||||
<value>17, 17</value>
|
|
||||||
</metadata>
|
|
||||||
</root>
|
|
121
Bloxstrap/Dialogs/Preferences.xaml
Normal file
121
Bloxstrap/Dialogs/Preferences.xaml
Normal file
@ -0,0 +1,121 @@
|
|||||||
|
<Window x:Class="Bloxstrap.Dialogs.Preferences"
|
||||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
|
xmlns:local="clr-namespace:Bloxstrap.Dialogs"
|
||||||
|
mc:Ignorable="d"
|
||||||
|
Style="{DynamicResource MainWindowStyle}"
|
||||||
|
Title="PreferencesWPF"
|
||||||
|
SizeToContent="WidthAndHeight"
|
||||||
|
ResizeMode="NoResize"
|
||||||
|
WindowStartupLocation="CenterScreen">
|
||||||
|
<Window.Resources>
|
||||||
|
<ResourceDictionary>
|
||||||
|
<ResourceDictionary.MergedDictionaries>
|
||||||
|
<!--<ResourceDictionary Source="Themes\ColourfulDarkTheme.xaml" />-->
|
||||||
|
<ResourceDictionary Source="Themes\LightTheme.xaml" />
|
||||||
|
</ResourceDictionary.MergedDictionaries>
|
||||||
|
</ResourceDictionary>
|
||||||
|
</Window.Resources>
|
||||||
|
<Grid Width="480" Height="360">
|
||||||
|
<TextBlock HorizontalAlignment="Left" Margin="10,10,0,0" TextWrapping="Wrap" Text="Configure Bloxstrap" VerticalAlignment="Top" FontSize="18"/>
|
||||||
|
<TabControl TabStripPlacement="Left" Margin="10,40,10,51" Padding="0">
|
||||||
|
<TabItem Padding="5">
|
||||||
|
<TabItem.Header>
|
||||||
|
<TextBlock Text="Integrations" FontSize="13" />
|
||||||
|
</TabItem.Header>
|
||||||
|
<StackPanel>
|
||||||
|
<Grid>
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="*" />
|
||||||
|
<ColumnDefinition Width="*" />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<GroupBox Grid.Column="0" Header="Discord Rich Presence" Margin="10,10,5,5">
|
||||||
|
<StackPanel VerticalAlignment="Center">
|
||||||
|
<CheckBox x:Name="CheckBoxDRPEnabled" Content=" Show game activity" Margin="5" VerticalAlignment="Top" IsChecked="{Binding DRPEnabled, Mode=TwoWay}" />
|
||||||
|
<CheckBox x:Name="CheckBoxDRPButtons" Content=" Show activity buttons" Margin="5" VerticalAlignment="Top" IsEnabled="{Binding IsChecked, ElementName=CheckBoxDRPEnabled, Mode=OneWay}" IsChecked="{Binding DRPButtons, Mode=TwoWay}" />
|
||||||
|
</StackPanel>
|
||||||
|
</GroupBox>
|
||||||
|
<GroupBox Grid.Column="1" Header="FPS Unlocking" Margin="5,10,10,5">
|
||||||
|
<StackPanel VerticalAlignment="Center">
|
||||||
|
<CheckBox x:Name="CheckBoxRFUEnabled" Content=" Use rbxfpsunlocker" Margin="5" VerticalAlignment="Top" IsChecked="{Binding RFUEnabled, Mode=TwoWay}" />
|
||||||
|
<CheckBox x:Name="CheckBoxRFUAutoclose" Content=" Exit when Roblox closes" Margin="5" VerticalAlignment="Top" IsEnabled="{Binding IsChecked, ElementName=CheckBoxRFUEnabled, Mode=OneWay}" IsChecked="{Binding RFUAutoclose, Mode=TwoWay}" />
|
||||||
|
</StackPanel>
|
||||||
|
</GroupBox>
|
||||||
|
</Grid>
|
||||||
|
<GroupBox Header="Modifications" VerticalAlignment="Top" Margin="10,5,10,0">
|
||||||
|
<StackPanel VerticalAlignment="Center">
|
||||||
|
<CheckBox x:Name="CheckBoxModDeathSound" Content=" Use old death sound" Margin="5" IsChecked="{Binding ModOldDeathSound, Mode=TwoWay}" />
|
||||||
|
<CheckBox x:Name="CheckBoxModMouseCursor" Content=" Use old mouse cursor" Margin="5" IsChecked="{Binding ModOldMouseCursor, Mode=TwoWay}" />
|
||||||
|
<Button x:Name="ButtonOpenModFolder" Content="Open folder" VerticalAlignment="Bottom" Height="23" Margin="5,5,5,5" Click="ButtonOpenModFolder_Click" />
|
||||||
|
</StackPanel>
|
||||||
|
</GroupBox>
|
||||||
|
</StackPanel>
|
||||||
|
</TabItem>
|
||||||
|
<TabItem Padding="5">
|
||||||
|
<TabItem.Header>
|
||||||
|
<TextBlock Text="Installation" FontSize="13" />
|
||||||
|
</TabItem.Header>
|
||||||
|
<StackPanel>
|
||||||
|
<GroupBox Header="Location" VerticalAlignment="Top" Margin="10,10,10,5">
|
||||||
|
<Grid Margin="5">
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="*" />
|
||||||
|
<ColumnDefinition Width="75" />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<TextBox Grid.Column="0" x:Name="TextBoxInstallLocation" Padding="0,1,0,2" Margin="0,0,5,0" Text="{Binding InstallLocation, Mode=OneWay}" />
|
||||||
|
<Button Grid.Column="1" x:Name="ButtonInstallLocationBrowse" Content="Browse..." Margin="5,0,0,0" Click="ButtonLocationBrowse_Click" />
|
||||||
|
</Grid>
|
||||||
|
</GroupBox>
|
||||||
|
<GroupBox Header="Channel" VerticalAlignment="Top" Margin="10, 5, 10, 0">
|
||||||
|
<StackPanel VerticalAlignment="Center">
|
||||||
|
<Grid>
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="*" />
|
||||||
|
<ColumnDefinition Width="130" />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<ComboBox x:Name="ComboBoxChannel" Margin="5" ItemsSource="{Binding Channels, Mode=OneWay}" Text="{Binding Channel, Mode=TwoWay}" />
|
||||||
|
<CheckBox Grid.Column="1" x:Name="CheckBoxShowAllChannels" Content=" Show all channels" VerticalAlignment="Center" Margin="5" IsChecked="{Binding ShowAllChannels, Mode=TwoWay}" />
|
||||||
|
</Grid>
|
||||||
|
<TextBlock x:Name="TextBlockChannelInfo" Text="{Binding ChannelInfo, Mode=OneWay}" TextWrapping="Wrap" Margin="5" />
|
||||||
|
</StackPanel>
|
||||||
|
</GroupBox>
|
||||||
|
</StackPanel>
|
||||||
|
</TabItem>
|
||||||
|
<TabItem Padding="5">
|
||||||
|
<TabItem.Header>
|
||||||
|
<TextBlock Text="Style" FontSize="13" />
|
||||||
|
</TabItem.Header>
|
||||||
|
<StackPanel Margin="10">
|
||||||
|
<Grid>
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="*" />
|
||||||
|
<RowDefinition Height="*" />
|
||||||
|
<RowDefinition Height="*" />
|
||||||
|
<RowDefinition Height="*" />
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="100" />
|
||||||
|
<ColumnDefinition Width="*" />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<TextBlock Grid.Row="0" Grid.Column="0" Text="Theme*" VerticalAlignment="Center" Margin="0,0,0,5" />
|
||||||
|
<ComboBox Grid.Row="0" Grid.Column="1" x:Name="ComboBoxTheme" VerticalAlignment="Center" Margin="0,0,0,0" ItemsSource="{Binding Themes.Keys, Mode=OneTime}" Text="{Binding Theme, Mode=TwoWay}" />
|
||||||
|
<TextBlock Grid.Row="1" Grid.Column="1" Text="*Dark theme only applies to the Progress Dialog style" FontSize="10" VerticalAlignment="Center" Margin="0,0,0,5" />
|
||||||
|
<TextBlock Grid.Row="2" Grid.Column="0" Text="Dialog" VerticalAlignment="Center" Margin="0,5,0,5" />
|
||||||
|
<ComboBox Grid.Row="2" Grid.Column="1" x:Name="ComboBoxDialog" VerticalAlignment="Center" Margin="0,5,0,5" ItemsSource="{Binding Dialogs.Keys, Mode=OneTime}" Text="{Binding Dialog, Mode=TwoWay}" />
|
||||||
|
<TextBlock Grid.Row="3" Grid.Column="0" Text="Icon" VerticalAlignment="Center" Margin="0,5,0,5" />
|
||||||
|
<ComboBox Grid.Row="3" Grid.Column="1" x:Name="ComboBoxIcon" VerticalAlignment="Center" Margin="0,5,0,5" ItemsSource="{Binding Icons.Keys, Mode=OneTime}" Text="{Binding Icon, Mode=TwoWay}" />
|
||||||
|
</Grid>
|
||||||
|
<Button x:Name="ButtonPreview" Content="Preview" Margin="0,5,0,0" VerticalAlignment="Bottom" Height="23" Click="ButtonPreview_Click" />
|
||||||
|
</StackPanel>
|
||||||
|
</TabItem>
|
||||||
|
</TabControl>
|
||||||
|
<Border Background="{DynamicResource ControlSelectedBackground}" BorderBrush="{DynamicResource ControlSelectedBorderBrush}" BorderThickness="1" Margin="-1,0,-1,-1" Height="42" VerticalAlignment="Bottom">
|
||||||
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
|
||||||
|
<Button x:Name="ButtonConfirm" Content="{Binding ConfirmButtonText, Mode=OneTime}" Width="66" Height="23" HorizontalAlignment="Right" Margin="0,0,10,0" Click="ButtonConfirm_Click" />
|
||||||
|
<Button x:Name="ButtonCancel" Content="Cancel" Width="66" Height="23" HorizontalAlignment="Right" Margin="0,0,10,0" Click="ButtonCancel_Click" />
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
</Grid>
|
||||||
|
</Window>
|
346
Bloxstrap/Dialogs/Preferences.xaml.cs
Normal file
346
Bloxstrap/Dialogs/Preferences.xaml.cs
Normal file
@ -0,0 +1,346 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.IO;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Interop;
|
||||||
|
using System.Windows.Media.Imaging;
|
||||||
|
|
||||||
|
using Microsoft.Win32;
|
||||||
|
|
||||||
|
using Bloxstrap.Enums;
|
||||||
|
using Bloxstrap.Helpers;
|
||||||
|
using Bloxstrap.Models;
|
||||||
|
|
||||||
|
using REghZyFramework.Themes;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace Bloxstrap.Dialogs
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Interaction logic for PreferencesWPF.xaml
|
||||||
|
/// </summary>
|
||||||
|
public partial class Preferences : Window
|
||||||
|
{
|
||||||
|
public readonly PreferencesViewModel ViewModel;
|
||||||
|
|
||||||
|
public Preferences()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
SetTheme();
|
||||||
|
|
||||||
|
ViewModel = new(this);
|
||||||
|
this.DataContext = ViewModel;
|
||||||
|
|
||||||
|
Program.SettingsManager.ShouldSave = false;
|
||||||
|
|
||||||
|
this.Icon = Imaging.CreateBitmapSourceFromHIcon(
|
||||||
|
Properties.Resources.IconBloxstrap_ico.Handle,
|
||||||
|
Int32Rect.Empty,
|
||||||
|
BitmapSizeOptions.FromEmptyOptions()
|
||||||
|
);
|
||||||
|
|
||||||
|
this.Title = Program.ProjectName;
|
||||||
|
|
||||||
|
// just in case i guess?
|
||||||
|
if (!Environment.Is64BitOperatingSystem)
|
||||||
|
this.CheckBoxRFUEnabled.IsEnabled = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetTheme()
|
||||||
|
{
|
||||||
|
string theme = "Light";
|
||||||
|
|
||||||
|
if (Program.Settings.Theme.GetFinal() == Theme.Dark)
|
||||||
|
theme = "ColourfulDark";
|
||||||
|
|
||||||
|
this.Resources.MergedDictionaries[0] = new ResourceDictionary() { Source = new Uri($"Dialogs/Themes/{theme}Theme.xaml", UriKind.Relative) };
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ButtonOpenModFolder_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Process.Start("explorer.exe", Directories.Modifications);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ButtonLocationBrowse_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
using (var dialog = new FolderBrowserDialog())
|
||||||
|
{
|
||||||
|
DialogResult result = dialog.ShowDialog();
|
||||||
|
|
||||||
|
if (result == System.Windows.Forms.DialogResult.OK)
|
||||||
|
ViewModel.InstallLocation = dialog.SelectedPath;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ButtonPreview_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
//this.Visible = false;
|
||||||
|
Program.Settings.BootstrapperStyle.Show();
|
||||||
|
//this.Visible = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ButtonCancel_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
this.Close();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ButtonConfirm_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
string installLocation = this.TextBoxInstallLocation.Text;
|
||||||
|
|
||||||
|
if (String.IsNullOrEmpty(installLocation))
|
||||||
|
{
|
||||||
|
Program.ShowMessageBox("You must set an install location", MessageBoxIcon.Error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// check if we can write to the directory (a bit hacky but eh)
|
||||||
|
|
||||||
|
string testPath = installLocation;
|
||||||
|
string testFile = Path.Combine(installLocation, "BloxstrapWriteTest.txt");
|
||||||
|
bool testPathExists = Directory.Exists(testPath);
|
||||||
|
|
||||||
|
if (!testPathExists)
|
||||||
|
Directory.CreateDirectory(testPath);
|
||||||
|
|
||||||
|
File.WriteAllText(testFile, "hi");
|
||||||
|
File.Delete(testFile);
|
||||||
|
|
||||||
|
if (!testPathExists)
|
||||||
|
Directory.Delete(testPath);
|
||||||
|
}
|
||||||
|
catch (UnauthorizedAccessException)
|
||||||
|
{
|
||||||
|
Program.ShowMessageBox($"{Program.ProjectName} does not have write access to the install location you selected. Please choose another install location.", MessageBoxIcon.Error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Program.ShowMessageBox(ex.Message, MessageBoxIcon.Error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Program.IsFirstRun)
|
||||||
|
{
|
||||||
|
// this will be set in the registry after first install
|
||||||
|
Program.BaseDirectory = installLocation;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Program.SettingsManager.ShouldSave = true;
|
||||||
|
|
||||||
|
if (Program.BaseDirectory is not null && Program.BaseDirectory != installLocation)
|
||||||
|
{
|
||||||
|
Program.ShowMessageBox($"{Program.ProjectName} will install to the new location you've set the next time it runs.", MessageBoxIcon.Information);
|
||||||
|
|
||||||
|
Program.Settings.VersionGuid = "";
|
||||||
|
|
||||||
|
using (RegistryKey registryKey = Registry.CurrentUser.CreateSubKey($@"Software\{Program.ProjectName}"))
|
||||||
|
{
|
||||||
|
registryKey.SetValue("InstallLocation", installLocation);
|
||||||
|
registryKey.SetValue("OldInstallLocation", Program.BaseDirectory);
|
||||||
|
}
|
||||||
|
|
||||||
|
// preserve settings
|
||||||
|
// we don't need to copy the bootstrapper over since the install process will do that automatically
|
||||||
|
|
||||||
|
Program.SettingsManager.Save();
|
||||||
|
|
||||||
|
File.Copy(Path.Combine(Program.BaseDirectory, "Settings.json"), Path.Combine(installLocation, "Settings.json"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.Close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class PreferencesViewModel : INotifyPropertyChanged
|
||||||
|
{
|
||||||
|
private readonly Preferences _window;
|
||||||
|
public event PropertyChangedEventHandler? PropertyChanged;
|
||||||
|
|
||||||
|
#region Integrations
|
||||||
|
public bool DRPEnabled
|
||||||
|
{
|
||||||
|
get => Program.Settings.UseDiscordRichPresence;
|
||||||
|
set => Program.Settings.UseDiscordRichPresence = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool DRPButtons
|
||||||
|
{
|
||||||
|
get => !Program.Settings.HideRPCButtons;
|
||||||
|
set => Program.Settings.HideRPCButtons = !value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool RFUEnabled
|
||||||
|
{
|
||||||
|
get => Program.Settings.RFUEnabled;
|
||||||
|
set => Program.Settings.RFUEnabled = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool RFUAutoclose
|
||||||
|
{
|
||||||
|
get => Program.Settings.RFUAutoclose;
|
||||||
|
set => Program.Settings.RFUAutoclose = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool ModOldDeathSound
|
||||||
|
{
|
||||||
|
get => Program.Settings.UseOldDeathSound;
|
||||||
|
set => Program.Settings.UseOldDeathSound = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool ModOldMouseCursor
|
||||||
|
{
|
||||||
|
get => Program.Settings.UseOldMouseCursor;
|
||||||
|
set => Program.Settings.UseOldMouseCursor = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool ModFolderButtonEnabled { get; } = !Program.IsFirstRun;
|
||||||
|
public string ModFolderButtonText { get; } = Program.IsFirstRun ? "Install Bloxstrap first to add custom mods" : "Open mod folder";
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Installation
|
||||||
|
private string installLocation = Program.IsFirstRun ? Path.Combine(Program.LocalAppData, Program.ProjectName) : Program.BaseDirectory;
|
||||||
|
public string InstallLocation
|
||||||
|
{
|
||||||
|
get => installLocation;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
installLocation = value;
|
||||||
|
OnPropertyChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool showAllChannels = !DeployManager.ChannelsAbstracted.Contains(Program.Settings.Channel);
|
||||||
|
public bool ShowAllChannels
|
||||||
|
{
|
||||||
|
get => showAllChannels;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (value)
|
||||||
|
{
|
||||||
|
Channels = DeployManager.ChannelsAll;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Channels = DeployManager.ChannelsAbstracted;
|
||||||
|
Channel = DeployManager.DefaultChannel;
|
||||||
|
OnPropertyChanged("Channel");
|
||||||
|
}
|
||||||
|
|
||||||
|
showAllChannels = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private IEnumerable<string> channels = DeployManager.ChannelsAbstracted.Contains(Program.Settings.Channel) ? DeployManager.ChannelsAbstracted : DeployManager.ChannelsAll;
|
||||||
|
public IEnumerable<string> Channels
|
||||||
|
{
|
||||||
|
get => channels;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
channels = value;
|
||||||
|
OnPropertyChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Channel
|
||||||
|
{
|
||||||
|
get => Program.Settings.Channel;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
Task.Run(() => GetChannelInfo(value));
|
||||||
|
Program.Settings.Channel = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private string channelInfo = "Getting latest version info, please wait...\n";
|
||||||
|
public string ChannelInfo
|
||||||
|
{
|
||||||
|
get => channelInfo;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
channelInfo = value;
|
||||||
|
OnPropertyChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Style
|
||||||
|
public IReadOnlyDictionary<string, Theme> Themes { get; set; } = new Dictionary<string, Theme>()
|
||||||
|
{
|
||||||
|
{ "System Default", Enums.Theme.Default },
|
||||||
|
{ "Light", Enums.Theme.Light },
|
||||||
|
{ "Dark", Enums.Theme.Dark },
|
||||||
|
};
|
||||||
|
|
||||||
|
public string Theme
|
||||||
|
{
|
||||||
|
get => Themes.FirstOrDefault(x => x.Value == Program.Settings.Theme).Key;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
Program.Settings.Theme = Themes[value];
|
||||||
|
_window.SetTheme();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public IReadOnlyDictionary<string, BootstrapperStyle> Dialogs { get; set; } = new Dictionary<string, BootstrapperStyle>()
|
||||||
|
{
|
||||||
|
{ "Vista (2009 - 2011)", BootstrapperStyle.VistaDialog },
|
||||||
|
{ "Legacy (2009 - 2011)", BootstrapperStyle.LegacyDialog2009 },
|
||||||
|
{ "Legacy (2011 - 2014)", BootstrapperStyle.LegacyDialog2011 },
|
||||||
|
{ "Progress (~2014)", BootstrapperStyle.ProgressDialog },
|
||||||
|
};
|
||||||
|
|
||||||
|
public string Dialog
|
||||||
|
{
|
||||||
|
get => Dialogs.FirstOrDefault(x => x.Value == Program.Settings.BootstrapperStyle).Key;
|
||||||
|
set => Program.Settings.BootstrapperStyle = Dialogs[value];
|
||||||
|
}
|
||||||
|
|
||||||
|
public IReadOnlyDictionary<string, BootstrapperIcon> Icons { get; set; } = new Dictionary<string, BootstrapperIcon>()
|
||||||
|
{
|
||||||
|
{ "Bloxstrap", BootstrapperIcon.IconBloxstrap },
|
||||||
|
{ "2009", BootstrapperIcon.Icon2009 },
|
||||||
|
{ "2011", BootstrapperIcon.Icon2011 },
|
||||||
|
{ "2015", BootstrapperIcon.IconEarly2015 },
|
||||||
|
{ "2016", BootstrapperIcon.IconLate2015 },
|
||||||
|
{ "2017", BootstrapperIcon.Icon2017 },
|
||||||
|
{ "2019", BootstrapperIcon.Icon2019 },
|
||||||
|
{ "2022", BootstrapperIcon.Icon2022 }
|
||||||
|
};
|
||||||
|
|
||||||
|
public string Icon
|
||||||
|
{
|
||||||
|
get => Icons.FirstOrDefault(x => x.Value == Program.Settings.BootstrapperIcon).Key;
|
||||||
|
set => Program.Settings.BootstrapperIcon = Icons[value];
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
public string ConfirmButtonText { get; } = Program.IsFirstRun ? "Install" : "Save";
|
||||||
|
|
||||||
|
public PreferencesViewModel(Preferences window)
|
||||||
|
{
|
||||||
|
_window = window;
|
||||||
|
Task.Run(() => GetChannelInfo(Program.Settings.Channel));
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void OnPropertyChanged([CallerMemberName] string? name = null)
|
||||||
|
{
|
||||||
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task GetChannelInfo(string channel)
|
||||||
|
{
|
||||||
|
ChannelInfo = "Getting latest version info, please wait...\n";
|
||||||
|
|
||||||
|
VersionDeploy info = await DeployManager.GetLastDeploy(channel);
|
||||||
|
string strTimestamp = info.Timestamp.ToString("MM/dd/yyyy h:mm:ss tt", Program.CultureFormat);
|
||||||
|
|
||||||
|
ChannelInfo = $"Version: v{info.FileVersion} ({info.VersionGuid})\nDeployed: {strTimestamp}";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
4505
Bloxstrap/Dialogs/Themes/ColourfulDarkTheme.xaml
Normal file
4505
Bloxstrap/Dialogs/Themes/ColourfulDarkTheme.xaml
Normal file
File diff suppressed because it is too large
Load Diff
43
Bloxstrap/Dialogs/Themes/ColourfulDarkTheme.xaml.cs
Normal file
43
Bloxstrap/Dialogs/Themes/ColourfulDarkTheme.xaml.cs
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
using System.Windows;
|
||||||
|
|
||||||
|
namespace REghZyFramework.Themes {
|
||||||
|
public partial class ColourfulDarkTheme {
|
||||||
|
private void CloseWindow_Event(object sender, RoutedEventArgs e) {
|
||||||
|
if (e.Source != null)
|
||||||
|
try {
|
||||||
|
CloseWind(Window.GetWindow((FrameworkElement) e.Source));
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AutoMinimize_Event(object sender, RoutedEventArgs e) {
|
||||||
|
if (e.Source != null)
|
||||||
|
try {
|
||||||
|
MaximizeRestore(Window.GetWindow((FrameworkElement) e.Source));
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Minimize_Event(object sender, RoutedEventArgs e) {
|
||||||
|
if (e.Source != null)
|
||||||
|
try {
|
||||||
|
MinimizeWind(Window.GetWindow((FrameworkElement) e.Source));
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void CloseWind(Window window) => window.Close();
|
||||||
|
|
||||||
|
public void MaximizeRestore(Window window) {
|
||||||
|
if (window.WindowState == WindowState.Maximized)
|
||||||
|
window.WindowState = WindowState.Normal;
|
||||||
|
else if (window.WindowState == WindowState.Normal)
|
||||||
|
window.WindowState = WindowState.Maximized;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void MinimizeWind(Window window) => window.WindowState = WindowState.Minimized;
|
||||||
|
}
|
||||||
|
}
|
4555
Bloxstrap/Dialogs/Themes/ColourfulLightTheme.xaml
Normal file
4555
Bloxstrap/Dialogs/Themes/ColourfulLightTheme.xaml
Normal file
File diff suppressed because it is too large
Load Diff
43
Bloxstrap/Dialogs/Themes/ColourfulLightTheme.xaml.cs
Normal file
43
Bloxstrap/Dialogs/Themes/ColourfulLightTheme.xaml.cs
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
using System.Windows;
|
||||||
|
|
||||||
|
namespace REghZyFramework.Themes {
|
||||||
|
public partial class ColourfulLightTheme {
|
||||||
|
private void CloseWindow_Event(object sender, RoutedEventArgs e) {
|
||||||
|
if (e.Source != null)
|
||||||
|
try {
|
||||||
|
CloseWind(Window.GetWindow((FrameworkElement) e.Source));
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AutoMinimize_Event(object sender, RoutedEventArgs e) {
|
||||||
|
if (e.Source != null)
|
||||||
|
try {
|
||||||
|
MaximizeRestore(Window.GetWindow((FrameworkElement) e.Source));
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Minimize_Event(object sender, RoutedEventArgs e) {
|
||||||
|
if (e.Source != null)
|
||||||
|
try {
|
||||||
|
MinimizeWind(Window.GetWindow((FrameworkElement) e.Source));
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void CloseWind(Window window) => window.Close();
|
||||||
|
|
||||||
|
public void MaximizeRestore(Window window) {
|
||||||
|
if (window.WindowState == WindowState.Maximized)
|
||||||
|
window.WindowState = WindowState.Normal;
|
||||||
|
else if (window.WindowState == WindowState.Normal)
|
||||||
|
window.WindowState = WindowState.Maximized;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void MinimizeWind(Window window) => window.WindowState = WindowState.Minimized;
|
||||||
|
}
|
||||||
|
}
|
4644
Bloxstrap/Dialogs/Themes/DarkTheme.xaml
Normal file
4644
Bloxstrap/Dialogs/Themes/DarkTheme.xaml
Normal file
File diff suppressed because it is too large
Load Diff
43
Bloxstrap/Dialogs/Themes/DarkTheme.xaml.cs
Normal file
43
Bloxstrap/Dialogs/Themes/DarkTheme.xaml.cs
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
using System.Windows;
|
||||||
|
|
||||||
|
namespace REghZyFramework.Themes {
|
||||||
|
public partial class DarkTheme {
|
||||||
|
private void CloseWindow_Event(object sender, RoutedEventArgs e) {
|
||||||
|
if (e.Source != null)
|
||||||
|
try {
|
||||||
|
CloseWind(Window.GetWindow((FrameworkElement) e.Source));
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AutoMinimize_Event(object sender, RoutedEventArgs e) {
|
||||||
|
if (e.Source != null)
|
||||||
|
try {
|
||||||
|
MaximizeRestore(Window.GetWindow((FrameworkElement) e.Source));
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Minimize_Event(object sender, RoutedEventArgs e) {
|
||||||
|
if (e.Source != null)
|
||||||
|
try {
|
||||||
|
MinimizeWind(Window.GetWindow((FrameworkElement) e.Source));
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void CloseWind(Window window) => window.Close();
|
||||||
|
|
||||||
|
public void MaximizeRestore(Window window) {
|
||||||
|
if (window.WindowState == WindowState.Maximized)
|
||||||
|
window.WindowState = WindowState.Normal;
|
||||||
|
else if (window.WindowState == WindowState.Normal)
|
||||||
|
window.WindowState = WindowState.Maximized;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void MinimizeWind(Window window) => window.WindowState = WindowState.Minimized;
|
||||||
|
}
|
||||||
|
}
|
4461
Bloxstrap/Dialogs/Themes/LightTheme.xaml
Normal file
4461
Bloxstrap/Dialogs/Themes/LightTheme.xaml
Normal file
File diff suppressed because it is too large
Load Diff
43
Bloxstrap/Dialogs/Themes/LightTheme.xaml.cs
Normal file
43
Bloxstrap/Dialogs/Themes/LightTheme.xaml.cs
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
using System.Windows;
|
||||||
|
|
||||||
|
namespace REghZyFramework.Themes {
|
||||||
|
public partial class LightTheme {
|
||||||
|
private void CloseWindow_Event(object sender, RoutedEventArgs e) {
|
||||||
|
if (e.Source != null)
|
||||||
|
try {
|
||||||
|
CloseWind(Window.GetWindow((FrameworkElement) e.Source));
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AutoMinimize_Event(object sender, RoutedEventArgs e) {
|
||||||
|
if (e.Source != null)
|
||||||
|
try {
|
||||||
|
MaximizeRestore(Window.GetWindow((FrameworkElement) e.Source));
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Minimize_Event(object sender, RoutedEventArgs e) {
|
||||||
|
if (e.Source != null)
|
||||||
|
try {
|
||||||
|
MinimizeWind(Window.GetWindow((FrameworkElement) e.Source));
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void CloseWind(Window window) => window.Close();
|
||||||
|
|
||||||
|
public void MaximizeRestore(Window window) {
|
||||||
|
if (window.WindowState == WindowState.Maximized)
|
||||||
|
window.WindowState = WindowState.Normal;
|
||||||
|
else if (window.WindowState == WindowState.Normal)
|
||||||
|
window.WindowState = WindowState.Maximized;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void MinimizeWind(Window window) => window.WindowState = WindowState.Minimized;
|
||||||
|
}
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
using Bloxstrap.Dialogs.BootstrapperStyles;
|
using Bloxstrap.Dialogs.BootstrapperDialogs;
|
||||||
|
|
||||||
namespace Bloxstrap.Enums
|
namespace Bloxstrap.Enums
|
||||||
{
|
{
|
||||||
@ -8,7 +8,6 @@ namespace Bloxstrap.Enums
|
|||||||
LegacyDialog2009,
|
LegacyDialog2009,
|
||||||
LegacyDialog2011,
|
LegacyDialog2011,
|
||||||
ProgressDialog,
|
ProgressDialog,
|
||||||
ProgressDialogDark,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class BootstrapperStyleEx
|
public static class BootstrapperStyleEx
|
||||||
@ -35,10 +34,6 @@ namespace Bloxstrap.Enums
|
|||||||
default:
|
default:
|
||||||
dialog = new ProgressDialog(bootstrapper);
|
dialog = new ProgressDialog(bootstrapper);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case BootstrapperStyle.ProgressDialogDark:
|
|
||||||
dialog = new ProgressDialogDark(bootstrapper);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bootstrapper is null)
|
if (bootstrapper is null)
|
||||||
|
32
Bloxstrap/Enums/Theme.cs
Normal file
32
Bloxstrap/Enums/Theme.cs
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
using Microsoft.Win32;
|
||||||
|
|
||||||
|
namespace Bloxstrap.Enums
|
||||||
|
{
|
||||||
|
public enum Theme
|
||||||
|
{
|
||||||
|
Default,
|
||||||
|
Light,
|
||||||
|
Dark
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class DialogThemeEx
|
||||||
|
{
|
||||||
|
public static Theme GetFinal(this Theme dialogTheme)
|
||||||
|
{
|
||||||
|
if (dialogTheme != Theme.Default)
|
||||||
|
return dialogTheme;
|
||||||
|
|
||||||
|
RegistryKey? key = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize");
|
||||||
|
|
||||||
|
if (key is not null)
|
||||||
|
{
|
||||||
|
var value = key.GetValue("AppsUseLightTheme");
|
||||||
|
|
||||||
|
if (value is not null && (int)value == 0)
|
||||||
|
return Theme.Dark;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Theme.Light;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,4 +1,7 @@
|
|||||||
using Bloxstrap.Models;
|
using System.IO;
|
||||||
|
using System.Net.Http;
|
||||||
|
|
||||||
|
using Bloxstrap.Models;
|
||||||
|
|
||||||
namespace Bloxstrap.Helpers
|
namespace Bloxstrap.Helpers
|
||||||
{
|
{
|
||||||
@ -21,7 +24,7 @@ namespace Bloxstrap.Helpers
|
|||||||
"ZIntegration",
|
"ZIntegration",
|
||||||
"ZLive",
|
"ZLive",
|
||||||
"ZNext",
|
"ZNext",
|
||||||
"ZPublic",
|
//"ZPublic",
|
||||||
"ZSocialTeam"
|
"ZSocialTeam"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -12,6 +12,7 @@ namespace Bloxstrap.Models
|
|||||||
|
|
||||||
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 Theme Theme { get; set; } = Theme.Default;
|
||||||
|
|
||||||
public bool UseDiscordRichPresence { get; set; } = true;
|
public bool UseDiscordRichPresence { get; set; } = true;
|
||||||
public bool HideRPCButtons { get; set; } = false;
|
public bool HideRPCButtons { get; set; } = false;
|
||||||
|
@ -8,8 +8,8 @@ namespace Bloxstrap.Models
|
|||||||
{
|
{
|
||||||
public class VersionDeploy
|
public class VersionDeploy
|
||||||
{
|
{
|
||||||
public string? VersionGuid { get; set; }
|
public string VersionGuid { get; set; } = null!;
|
||||||
public DateTime? Timestamp { get; set; }
|
public string FileVersion { get; set; } = null!;
|
||||||
public string? FileVersion { get; set; }
|
public DateTime Timestamp { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,7 @@ using Microsoft.Win32;
|
|||||||
using Bloxstrap.Enums;
|
using Bloxstrap.Enums;
|
||||||
using Bloxstrap.Helpers;
|
using Bloxstrap.Helpers;
|
||||||
using Bloxstrap.Models;
|
using Bloxstrap.Models;
|
||||||
|
using Bloxstrap.Dialogs;
|
||||||
|
|
||||||
namespace Bloxstrap
|
namespace Bloxstrap
|
||||||
{
|
{
|
||||||
@ -25,11 +26,11 @@ namespace Bloxstrap
|
|||||||
public const string Base64OldArrowFarCursor = "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAQAAAAAYLlVAAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfdBwoWHwRtdYxgAAAAfElEQVRo3u3WwQmAMBQEUetPtXYQERE10VyEHcSZNPBOPztNZmZmZmZmZmYvK7VUGDCzhBWAEjYASNgBGOEAQIQzACFcAQChBcQJPSBMuANECfeAIOEJECM8A0KEESBCGAMChP4Qte9Ppxj+jODvGB4k8CSDRyk8y83s8y1ZdnQ0Empj3AAAAABJRU5ErkJggg==";
|
public const string Base64OldArrowFarCursor = "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAQAAAAAYLlVAAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfdBwoWHwRtdYxgAAAAfElEQVRo3u3WwQmAMBQEUetPtXYQERE10VyEHcSZNPBOPztNZmZmZmZmZmYvK7VUGDCzhBWAEjYASNgBGOEAQIQzACFcAQChBcQJPSBMuANECfeAIOEJECM8A0KEESBCGAMChP4Qte9Ppxj+jODvGB4k8CSDRyk8y83s8y1ZdnQ0Empj3AAAAABJRU5ErkJggg==";
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
public static string? BaseDirectory;
|
public static string BaseDirectory = null!;
|
||||||
public static bool IsFirstRun { get; private set; } = false;
|
public static bool IsFirstRun { get; private set; } = false;
|
||||||
|
|
||||||
public static string LocalAppData { get; private set; } = "";
|
public static string LocalAppData { get; private set; } = null!;
|
||||||
public static string StartMenu { get; private set; } = "";
|
public static string StartMenu { get; private set; } = null!;
|
||||||
|
|
||||||
public static SettingsManager SettingsManager = new();
|
public static SettingsManager SettingsManager = new();
|
||||||
public static SettingsFormat Settings = SettingsManager.Settings;
|
public static SettingsFormat Settings = SettingsManager.Settings;
|
||||||
@ -66,7 +67,7 @@ namespace Bloxstrap
|
|||||||
{
|
{
|
||||||
IsFirstRun = true;
|
IsFirstRun = true;
|
||||||
Settings = SettingsManager.Settings;
|
Settings = SettingsManager.Settings;
|
||||||
Application.Run(new Dialogs.Preferences());
|
new Preferences().ShowDialog();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -91,10 +92,15 @@ namespace Bloxstrap
|
|||||||
SettingsManager.ShouldSave = true;
|
SettingsManager.ShouldSave = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if !DEBUG
|
||||||
Updater.Check().Wait();
|
Updater.Check().Wait();
|
||||||
|
#endif
|
||||||
|
|
||||||
string commandLine = "";
|
string commandLine = "";
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
new Preferences().ShowDialog();
|
||||||
|
#else
|
||||||
if (args.Length > 0)
|
if (args.Length > 0)
|
||||||
{
|
{
|
||||||
if (args[0] == "-preferences")
|
if (args[0] == "-preferences")
|
||||||
@ -105,7 +111,7 @@ namespace Bloxstrap
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Application.Run(new Dialogs.Preferences());
|
new PreferencesWPF().ShowDialog();
|
||||||
}
|
}
|
||||||
else if (args[0].StartsWith("roblox-player:"))
|
else if (args[0].StartsWith("roblox-player:"))
|
||||||
{
|
{
|
||||||
@ -124,6 +130,7 @@ namespace Bloxstrap
|
|||||||
{
|
{
|
||||||
commandLine = "--app";
|
commandLine = "--app";
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
if (!String.IsNullOrEmpty(commandLine))
|
if (!String.IsNullOrEmpty(commandLine))
|
||||||
|
Loading…
Reference in New Issue
Block a user