Switch-Toolbox/File_Format_Library/GUI/Rom/SwitchKeySelectionForm.cs

139 lines
4.2 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Toolbox.Library.Forms;
using LibHac;
using Toolbox.Library;
namespace FirstPlugin.Forms
{
public partial class SwitchKeySelectionForm : STForm
{
public SwitchKeySelectionForm()
{
InitializeComponent();
}
public static Keyset ShowKeySelector()
{
if (Runtime.SwitchKeys.HasKeys())
return ExternalKeys.ReadKeyFile(Runtime.SwitchKeys.ProdKeys, Runtime.SwitchKeys.TitleKeys);
SwitchKeySelectionForm selectorKeys = new SwitchKeySelectionForm();
if (selectorKeys.ShowDialog() == DialogResult.OK)
{
var Keys = ExternalKeys.ReadKeyFile(Runtime.SwitchKeys.ProdKeys, Runtime.SwitchKeys.TitleKeys);
return Keys;
}
return null;
}
private void setProdKeyPath_Click(object sender, EventArgs e)
{
string ProdKeyPath = GetOpenedFileName();
TextBoxProdKeyPath.Text = ProdKeyPath;
if (File.Exists(ProdKeyPath))
{
TextBoxProdKeyPath.BackColor = FormThemes.BaseTheme.FormBackColor;
Runtime.SwitchKeys.ProdKeys = ProdKeyPath;
}
else
TextBoxProdKeyPath.BackColor = Color.Red;
CheckKeys();
}
private void setTitleKeyPath_Click(object sender, EventArgs e)
{
string TitleKeyPath = GetOpenedFileName();
TextBoxTitleKey.Text = TitleKeyPath;
if (File.Exists(TitleKeyPath))
{
TextBoxTitleKey.BackColor = FormThemes.BaseTheme.FormBackColor;
Runtime.SwitchKeys.TitleKeys = TitleKeyPath;
}
else
TextBoxTitleKey.BackColor = Color.Red;
CheckKeys();
}
private void UpdateTextBoxes(string titlePath, string prodPath)
{
if (File.Exists(titlePath))
{
TextBoxTitleKey.Text = titlePath;
TextBoxTitleKey.BackColor = FormThemes.BaseTheme.FormBackColor;
Runtime.SwitchKeys.TitleKeys = titlePath;
}
else
TextBoxTitleKey.BackColor = Color.Red;
if (File.Exists(prodPath))
{
TextBoxTitleKey.Text = prodPath;
TextBoxProdKeyPath.BackColor = FormThemes.BaseTheme.FormBackColor;
Runtime.SwitchKeys.ProdKeys = prodPath;
}
else
TextBoxProdKeyPath.BackColor = Color.Red;
CheckKeys();
}
private void CheckKeys()
{
if (File.Exists(Runtime.SwitchKeys.ProdKeys) && File.Exists(Runtime.SwitchKeys.TitleKeys))
btnOk.Enabled = true;
else
btnOk.Enabled = false;
}
private string GetOpenedFileName()
{
OpenFileDialog ofd = new OpenFileDialog();
if (ofd.ShowDialog() == DialogResult.OK)
return ofd.FileName;
else return null;
}
private void btnOk_Click(object sender, EventArgs e)
{
try
{
var Keys = ExternalKeys.ReadKeyFile(Runtime.SwitchKeys.ProdKeys, Runtime.SwitchKeys.TitleKeys);
Toolbox.Library.Config.Save();
}
catch
{
DialogResult = DialogResult.Ignore;
}
}
private void stCheckBox1_CheckedChanged(object sender, EventArgs e)
{
if (stCheckBox1.Checked)
{
TextBoxProdKeyPath.Text = Path.Combine(Runtime.SwitchKeys.SwitchFolder, "prod.keys");
TextBoxTitleKey.Text = Path.Combine(Runtime.SwitchKeys.SwitchFolder, "title.keys");
}
else
{
TextBoxProdKeyPath.Text = Runtime.SwitchKeys.ProdKeys;
TextBoxTitleKey.Text = Runtime.SwitchKeys.TitleKeys;
}
UpdateTextBoxes(TextBoxTitleKey.Text , TextBoxProdKeyPath.Text);
}
}
}