871 lines
32 KiB
C#
871 lines
32 KiB
C#
using System;
|
|
using System.ComponentModel;
|
|
using System.IO;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
using Serilog;
|
|
|
|
namespace DatEmAll_GUI
|
|
{
|
|
/// <summary>
|
|
/// The DatEmAll GUI Class which interacts with the Main Program Class.
|
|
/// </summary>
|
|
public partial class FrmDatEmAll : Form
|
|
{
|
|
#region Constructors
|
|
|
|
DatEmAll.DatEmAll DEA = new DatEmAll.DatEmAll();
|
|
|
|
/// <summary>
|
|
/// Constructor
|
|
/// </summary>
|
|
public FrmDatEmAll()
|
|
{
|
|
// Initialize the form.
|
|
InitializeComponent();
|
|
|
|
// Print the version.
|
|
DEA.PrintVersion();
|
|
|
|
// Load the default options passed from the default options file.
|
|
DEA.LoadOptionsFromFile();
|
|
|
|
// Load the default options passed from the command line arguments.
|
|
DEA.LoadOptionsFromCLI(Environment.GetCommandLineArgs());
|
|
|
|
// Add data bindings.
|
|
chkIncludeCRC32Hash.DataBindings.Add("Checked", DEA, "IncludeCRC32Hash");
|
|
chkIncludeMD5Hash.DataBindings.Add("Checked", DEA, "IncludeMD5Hash");
|
|
chkIncludeSHA1Hash.DataBindings.Add("Checked", DEA, "IncludeSHA1Hash");
|
|
chkIncludeFileSize.DataBindings.Add("Checked", DEA, "IncludeFileSize");
|
|
chkAppendGameCountToFilename.DataBindings.Add("Checked", DEA, "AppendGameCountToFilename");
|
|
chkAppendGameCountToDescription.DataBindings.Add("Checked", DEA, "AppendGameCountToDescription");
|
|
chkAppendVersionToFilename.DataBindings.Add("Checked", DEA, "AppendVersionToFilename");
|
|
chkAppendVersionToDescription.DataBindings.Add("Checked", DEA, "AppendVersionToDescription");
|
|
chkIncludeROMDirRootFiles.DataBindings.Add("Checked", DEA, "IncludeROMDirRootFiles");
|
|
txtDatFilename.DataBindings.Add("Text", DEA, "DatFilename");
|
|
cbXMLEncoding.DataBindings.Add("SelectedItem", DEA, "XMLEncoding");
|
|
cbXMLDOCTYPE.DataBindings.Add("SelectedItem", DEA, "XMLDOCTYPE");
|
|
chkIncludeDefaultHeaderName.DataBindings.Add("Checked", DEA, "IncludeDefaultHeaderName");
|
|
chkIncludeDefaultHeaderDescription.DataBindings.Add("Checked", DEA, "IncludeDefaultHeaderDescription");
|
|
chkIncludeDefaultHeaderVersion.DataBindings.Add("Checked", DEA, "IncludeDefaultHeaderVersion");
|
|
chkIncludeDefaultHeaderDate.DataBindings.Add("Checked", DEA, "IncludeDefaultHeaderDate");
|
|
chkIncludeDefaultHeaderAuthor.DataBindings.Add("Checked", DEA, "IncludeDefaultHeaderAuthor");
|
|
chkIncludeDefaultHeaderEmail.DataBindings.Add("Checked", DEA, "IncludeDefaultHeaderEmail");
|
|
chkIncludeDefaultHeaderHomepage.DataBindings.Add("Checked", DEA, "IncludeDefaultHeaderHomepage");
|
|
chkIncludeDefaultHeaderURL.DataBindings.Add("Checked", DEA, "IncludeDefaultHeaderURL");
|
|
chkIncludeDefaultHeaderComment.DataBindings.Add("Checked", DEA, "IncludeDefaultHeaderComment");
|
|
chkIncludeDefaultHeaderCategory.DataBindings.Add("Checked", DEA, "IncludeDefaultHeaderCategory");
|
|
chkIncludeDefaultHeaderCMPForceUnzip.DataBindings.Add("Checked", DEA, "IncludeDefaultHeaderCMPForceUnzip");
|
|
txtOverrideHeaderName.DataBindings.Add("Text", DEA, "OverrideHeaderName");
|
|
txtOverrideHeaderDescription.DataBindings.Add("Text", DEA, "OverrideHeaderDescription");
|
|
txtOverrideHeaderVersion.DataBindings.Add("Text", DEA, "OverrideHeaderVersion");
|
|
txtOverrideHeaderDate.DataBindings.Add("Text", DEA, "OverrideHeaderDate");
|
|
txtOverrideHeaderAuthor.DataBindings.Add("Text", DEA, "OverrideHeaderAuthor");
|
|
txtOverrideHeaderEmail.DataBindings.Add("Text", DEA, "OverrideHeaderEmail");
|
|
txtOverrideHeaderHomepage.DataBindings.Add("Text", DEA, "OverrideHeaderHomepage");
|
|
txtOverrideHeaderURL.DataBindings.Add("Text", DEA, "OverrideHeaderURL");
|
|
txtOverrideHeaderComment.DataBindings.Add("Text", DEA, "OverrideHeaderComment");
|
|
txtOverrideHeaderCategory.DataBindings.Add("Text", DEA, "OverrideHeaderCategory");
|
|
chkCheckForLatestVersion.DataBindings.Add("Checked", DEA, "CheckForLatestVersion");
|
|
chkCheckSSLCertificates.DataBindings.Add("Checked", DEA, "CheckSSLCertificates");
|
|
chkSendErrorReports.DataBindings.Add("Checked", DEA, "SendErrorReports");
|
|
cbLanguageLocality.DataBindings.Add("SelectedItem", DEA, "LanguageLocality");
|
|
cbLogLevel.DataBindings.Add("SelectedItem", DEA, "LogLevel");
|
|
txtPathDatsDir.DataBindings.Add("Text", DEA, "PathDatsDir");
|
|
txtPathROMsDir.DataBindings.Add("Text", DEA, "PathROMsDir");
|
|
txtRegisterAppUsername.DataBindings.Add("Text", DEA, "RegisterAppUsername");
|
|
txtRegisterAppEmailAddress.DataBindings.Add("Text", DEA, "RegisterAppEmailAddress");
|
|
txtRegisterAppPassword.DataBindings.Add("Text", DEA, "RegisterAppPassword");
|
|
|
|
// Hide some tabs.
|
|
tcMain.TabPages.Remove(tabHelp);
|
|
tcMain.TabPages.Remove(tabLicense);
|
|
tcMain.TabPages.Remove(tabDonations);
|
|
tcMain.TabPages.Remove(tabRegistration);
|
|
|
|
// Set the title.
|
|
UpdateTitle();
|
|
|
|
// Load the GUI RichTextBoxes from resources.
|
|
rtbHelp.Text = DatEmAll.Properties.Resources.DatEmAll_HELP;
|
|
rtbLicense.Text = DatEmAll.Properties.Resources.DatEmAll_LICENSE;
|
|
rtbDonations.Text = DatEmAll.Properties.Resources.DatEmAll_DONATIONS;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Getters/Setters Public Accessors
|
|
|
|
/// LogLines
|
|
public string[] LogLines
|
|
{
|
|
get { return rtblLog.Lines; }
|
|
set { rtblLog.Lines = value; }
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Log
|
|
|
|
/// <summary>
|
|
/// Saves the log to a text file.
|
|
/// </summary>
|
|
/// <param name="strPath"></param>
|
|
/// <returns></returns>
|
|
public bool SaveLogToFile(string strPath = null)
|
|
{
|
|
try
|
|
{
|
|
if (strPath != null)
|
|
{
|
|
DEA.PathLogFile = strPath;
|
|
}
|
|
|
|
// Determine if the user selected a log filename.
|
|
if (DEA.PathLogFile.Length == 0)
|
|
{
|
|
// Return a bool value.
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
// Print to screen
|
|
Log.Information("Saving log file ...");
|
|
|
|
// Create log file directory if it doesn't exist.
|
|
if (Directory.Exists(Path.GetDirectoryName(DEA.PathLogFile)) == false) Directory.CreateDirectory(Path.GetDirectoryName(DEA.PathLogFile));
|
|
|
|
// Save the contents of the log to a text file.
|
|
File.WriteAllLines(DEA.PathLogFile, LogLines);
|
|
|
|
// Print to screen
|
|
Log.Information("Log file saved (" + DEA.PathLogFile + ")");
|
|
|
|
// Return a bool value.
|
|
return true;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
// Print to screen
|
|
Log.Error("Saving log file failed");
|
|
Log.Error(ex.Message);
|
|
|
|
// Return a bool value.
|
|
return false;
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Startup Tasks
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void StartupTasks_DoWork(object sender, DoWorkEventArgs e)
|
|
{
|
|
// Run startup tasks.
|
|
DEA.StartupTasks();
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void StartupTasks_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
|
|
{
|
|
if (e.Cancelled)
|
|
{
|
|
// Print to screen
|
|
Log.Information("Startup tasks canceled");
|
|
}
|
|
else if (e.Error != null)
|
|
{
|
|
// Print to screen
|
|
Log.Error("Startup tasks failed");
|
|
Log.Error(e.Error.Message);
|
|
}
|
|
else
|
|
{
|
|
//
|
|
}
|
|
|
|
// Print to screen
|
|
Log.Information("Ready");
|
|
|
|
// Update the status message label.
|
|
UpdateStatusMessageLabel("Ready");
|
|
|
|
// Enable all of the buttons.
|
|
Invoke(new EnableAllButtonsDelegate(EnableAllButtons));
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region GUI Methods
|
|
|
|
/// <summary>
|
|
/// Cancels the current backgroundworker.
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void Cancel_Click(object sender, EventArgs e)
|
|
{
|
|
if (bgwBuildDat.WorkerSupportsCancellation == true)
|
|
{
|
|
// Print to screen
|
|
Log.Information("Cancellation pending after current operation ...");
|
|
|
|
// Disable the cancel button.
|
|
tssbCancel.Enabled = false;
|
|
|
|
// Cancel the asynchronous operation.
|
|
bgwBuildDat.CancelAsync();
|
|
|
|
// Update the status message label.
|
|
UpdateStatusMessageLabel("Cancellation Pending ...");
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Updates/Sets the application title.
|
|
/// </summary>
|
|
/// <param name="strTitle"></param>
|
|
/// <returns></returns>
|
|
public bool UpdateTitle(string strTitle = "")
|
|
{
|
|
try
|
|
{
|
|
if (this.InvokeRequired && !this.IsDisposed)
|
|
{
|
|
Invoke(new MethodInvoker(delegate ()
|
|
{
|
|
// Update the application title.
|
|
this.Text = DEA.AppName + " v" + DEA.AppVersion + strTitle;
|
|
}));
|
|
}
|
|
else if (!this.IsDisposed)
|
|
{
|
|
// Update the application title.
|
|
this.Text = DEA.AppName + " v" + DEA.AppVersion + strTitle;
|
|
}
|
|
return true;
|
|
}
|
|
catch (Exception)
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Updates the progress status message label.
|
|
/// </summary>
|
|
/// <param name="strMsg"></param>
|
|
private void UpdateStatusMessageLabel(string strMsg)
|
|
{
|
|
// Update the progress status message label.
|
|
tsslStatusMessage.Text = strMsg;
|
|
}
|
|
|
|
/// <summary>
|
|
/// After the form is shown, run the startup tasks.
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void Form_Shown(object sender, EventArgs e)
|
|
{
|
|
// Perform the application startup tasks.
|
|
bgwStartupTasks.RunWorkerAsync();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Exits the WinForm app.
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void ExitApp_Click(object sender, EventArgs e)
|
|
{
|
|
Application.Exit();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Exits the Forms application.
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void Form_FormClosing(object sender, FormClosingEventArgs e)
|
|
{
|
|
if (bgwBuildDat.IsBusy == true)
|
|
{
|
|
if (MessageBox.Show("The dat builder is currently running. Are you sure you want to exit now? Exiting now may cause corrupt or incomplete files!", "Confirm Exit", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) != DialogResult.OK)
|
|
{
|
|
e.Cancel = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Changes the path to the Dats directory.
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void PathDatsDir_Click(object sender, EventArgs e)
|
|
{
|
|
// Disable all buttons.
|
|
DisableAllButtons();
|
|
|
|
if (txtPathDatsDir.Text == "") { txtPathDatsDir.Text = "Dats"; }
|
|
|
|
// Create and initialize a FolderBrowserDialog for the Dats directory.
|
|
FolderBrowserDialog fbdSelectDir = new FolderBrowserDialog
|
|
{
|
|
ShowNewFolderButton = true,
|
|
Description = "Please enter a path to the Dats directory: ",
|
|
SelectedPath = Path.GetFullPath(Path.Combine(txtPathDatsDir.Text))
|
|
};
|
|
|
|
// Determine if the user selected OK from the FolderBrowserDialog.
|
|
if (fbdSelectDir.ShowDialog() == DialogResult.OK)
|
|
{
|
|
// Set both variables for compatibility for Windows .Net and Mono.
|
|
this.DEA.PathDatsDir = fbdSelectDir.SelectedPath;
|
|
txtPathDatsDir.Text = fbdSelectDir.SelectedPath;
|
|
}
|
|
|
|
// Enable all buttons.
|
|
EnableAllButtons();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Changes the path to the ROMs directory.
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void PathROMsDir_Click(object sender, EventArgs e)
|
|
{
|
|
// Disable all buttons.
|
|
DisableAllButtons();
|
|
|
|
if (txtPathROMsDir.Text == "") { txtPathROMsDir.Text = "ROMs"; }
|
|
|
|
// Create and initialize a FolderBrowserDialog for the ROMs directory.
|
|
FolderBrowserDialog fbdSelectDir = new FolderBrowserDialog
|
|
{
|
|
ShowNewFolderButton = true,
|
|
Description = "Please enter a path to the ROMs directory: ",
|
|
SelectedPath = Path.GetFullPath(Path.Combine(txtPathROMsDir.Text))
|
|
};
|
|
|
|
// Determine if the user selected OK from the FolderBrowserDialog.
|
|
if (fbdSelectDir.ShowDialog() == DialogResult.OK)
|
|
{
|
|
// Set both variables for compatibility for Windows .NET and Mono.
|
|
this.DEA.PathROMsDir = fbdSelectDir.SelectedPath;
|
|
txtPathROMsDir.Text = fbdSelectDir.SelectedPath;
|
|
}
|
|
|
|
// Enable all buttons.
|
|
EnableAllButtons();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Builds a dat.
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void BuildDat_Click(object sender, EventArgs e)
|
|
{
|
|
// Select the Log tab.
|
|
if (tcMain.TabPages.Contains(tabLog)) { tcMain.SelectTab(tabLog); }
|
|
|
|
// Disable all buttons.
|
|
DisableAllButtons();
|
|
|
|
// Enable the cancel button.
|
|
tssbCancel.Enabled = true;
|
|
|
|
// Update the status message label.
|
|
UpdateStatusMessageLabel("Building Dat ...");
|
|
|
|
// Update the DateTimeFormatted variable.
|
|
DEA.DateTimeFormatted = DateTime.Now.ToString("yyyyMMdd_HHmmss");
|
|
|
|
// Build a dat.
|
|
bgwBuildDat.RunWorkerAsync();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Loads an options file.
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void LoadOptions_Click(object sender, EventArgs e)
|
|
{
|
|
// Disable all buttons.
|
|
DisableAllButtons();
|
|
|
|
// Create and initialize an OpenFileDialog for the options file.
|
|
OpenFileDialog ofdOptions = new OpenFileDialog
|
|
{
|
|
DefaultExt = "*.xml",
|
|
Filter = "XML Files|*.xml",
|
|
Title = "Please enter a path to the options file: ",
|
|
InitialDirectory = Path.Combine(Application.StartupPath, "Options")
|
|
};
|
|
|
|
// Determine if the user selected a file name from the OpenFileDialog.
|
|
if (ofdOptions.ShowDialog() == DialogResult.OK && ofdOptions.FileName.Length > 0)
|
|
{
|
|
// Set the options file path.
|
|
DEA.PathOptionsFile = ofdOptions.FileName;
|
|
|
|
// Select the Log tab.
|
|
if (tcMain.TabPages.Contains(tabLog)) { tcMain.SelectTab(tabLog); }
|
|
|
|
// Load the options.
|
|
DEA.LoadOptionsFromFile();
|
|
|
|
// Print to screen
|
|
Log.Information("Ready");
|
|
}
|
|
|
|
// Dispose of the OpenFileDialog.
|
|
ofdOptions.Dispose();
|
|
|
|
// Enable all buttons.
|
|
EnableAllButtons();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Saves an options file.
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void SaveOptions_Click(object sender, EventArgs e)
|
|
{
|
|
// Disable all buttons.
|
|
DisableAllButtons();
|
|
|
|
// Create and initialize a SaveFileDialog for the options file.
|
|
SaveFileDialog sfdOptions = new SaveFileDialog
|
|
{
|
|
DefaultExt = "*.xml",
|
|
Filter = "XML Files|*.xml",
|
|
FileName = "DatEmAll-Options.xml",
|
|
Title = "Please enter a path to the options file: ",
|
|
InitialDirectory = Path.Combine(Application.StartupPath, "Options")
|
|
};
|
|
|
|
// Determine if the user selected a file name from the SaveFileDialog.
|
|
if (sfdOptions.ShowDialog() == DialogResult.OK && sfdOptions.FileName.Length > 0)
|
|
{
|
|
// Set the options file path.
|
|
DEA.PathOptionsFile = sfdOptions.FileName;
|
|
|
|
// Select the Log tab.
|
|
if (tcMain.TabPages.Contains(tabLog)) { tcMain.SelectTab(tabLog); }
|
|
|
|
// Save the options.
|
|
DEA.SaveOptionsToFile();
|
|
|
|
// Print to screen
|
|
Log.Information("Ready");
|
|
}
|
|
|
|
// Dispose of the SaveFileDialog.
|
|
sfdOptions.Dispose();
|
|
|
|
// Enable all buttons.
|
|
EnableAllButtons();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Saves the log to a text file.
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void SaveLog_Click(object sender, EventArgs e)
|
|
{
|
|
// Disable all buttons.
|
|
DisableAllButtons();
|
|
|
|
// Create and initialize a SaveFileDialog for the log file.
|
|
SaveFileDialog sfdLog = new SaveFileDialog
|
|
{
|
|
DefaultExt = "*.txt",
|
|
Filter = "TXT Files|*.txt",
|
|
FileName = "DatEmAll-Log-" + DateTime.Now.ToString("yyyyMMdd_HHmmss") + ".txt",
|
|
Title = "Please enter a path to the log file: ",
|
|
InitialDirectory = Path.Combine(Application.StartupPath, "Logs")
|
|
};
|
|
|
|
// Determine if the user selected a log filename.
|
|
if (sfdLog.ShowDialog() == DialogResult.OK && sfdLog.FileName.Length > 0)
|
|
{
|
|
// Set the log file path.
|
|
DEA.PathLogFile = sfdLog.FileName;
|
|
|
|
// Select the Log tab.
|
|
if (tcMain.TabPages.Contains(tabLog)) { tcMain.SelectTab(tabLog); }
|
|
|
|
// Save the log.
|
|
SaveLogToFile(DEA.PathLogFile);
|
|
|
|
// Print to screen
|
|
Log.Information("Ready");
|
|
}
|
|
|
|
// Dispose of the SaveFileDialog.
|
|
sfdLog.Dispose();
|
|
|
|
// Enable all buttons.
|
|
EnableAllButtons();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Toggles the visibility of the log.
|
|
/// </summary>
|
|
private void ViewLog_Click(object sender, EventArgs e)
|
|
{
|
|
if (tsmiLog.Checked)
|
|
{
|
|
tsmiLog.Checked = false;
|
|
tsmiLog.CheckState = CheckState.Unchecked;
|
|
tcMain.TabPages.Remove(tabLog);
|
|
}
|
|
else
|
|
{
|
|
tsmiLog.Checked = true;
|
|
tsmiLog.CheckState = CheckState.Checked;
|
|
tcMain.TabPages.Add(tabLog);
|
|
tcMain.SelectTab(tabLog);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Toggles the visibility of the options.
|
|
/// </summary>
|
|
private void ViewOptions_Click(object sender, EventArgs e)
|
|
{
|
|
if (tsmiOptions.Checked)
|
|
{
|
|
tsmiOptions.Checked = false;
|
|
tsmiOptions.CheckState = CheckState.Unchecked;
|
|
tcMain.TabPages.Remove(tabOptions);
|
|
}
|
|
else
|
|
{
|
|
tsmiOptions.Checked = true;
|
|
tsmiOptions.CheckState = CheckState.Checked;
|
|
tcMain.TabPages.Add(tabOptions);
|
|
tcMain.SelectTab(tabOptions);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Toggles the visibility of the help.
|
|
/// </summary>
|
|
private void ViewHelp_Click(object sender, EventArgs e)
|
|
{
|
|
if (tsmiHelp.Checked)
|
|
{
|
|
tsmiHelp.Checked = false;
|
|
tsmiHelp.CheckState = CheckState.Unchecked;
|
|
tcMain.TabPages.Remove(tabHelp);
|
|
}
|
|
else
|
|
{
|
|
tsmiHelp.Checked = true;
|
|
tsmiHelp.CheckState = CheckState.Checked;
|
|
tcMain.TabPages.Add(tabHelp);
|
|
tcMain.SelectTab(tabHelp);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Toggles the visibility of the license.
|
|
/// </summary>
|
|
private void ViewLicense_Click(object sender, EventArgs e)
|
|
{
|
|
if (tsmiLicense.Checked)
|
|
{
|
|
tsmiLicense.Checked = false;
|
|
tsmiLicense.CheckState = CheckState.Unchecked;
|
|
tcMain.TabPages.Remove(tabLicense);
|
|
}
|
|
else
|
|
{
|
|
tsmiLicense.Checked = true;
|
|
tsmiLicense.CheckState = CheckState.Checked;
|
|
tcMain.TabPages.Add(tabLicense);
|
|
tcMain.SelectTab(tabLicense);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Toggles the visibility of the registration.
|
|
/// </summary>
|
|
private void ViewRegistration_Click(object sender, EventArgs e)
|
|
{
|
|
if (tsmiRegistration.Checked)
|
|
{
|
|
tsmiRegistration.Checked = false;
|
|
tsmiRegistration.CheckState = CheckState.Unchecked;
|
|
tcMain.TabPages.Remove(tabRegistration);
|
|
}
|
|
else
|
|
{
|
|
tsmiRegistration.Checked = true;
|
|
tsmiRegistration.CheckState = CheckState.Checked;
|
|
tcMain.TabPages.Add(tabRegistration);
|
|
tcMain.SelectTab(tabRegistration);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Toggles the visibility of the Donations.
|
|
/// </summary>
|
|
private void ViewDonations_Click(object sender, EventArgs e)
|
|
{
|
|
if (tsmiDonations.Checked)
|
|
{
|
|
tsmiDonations.Checked = false;
|
|
tsmiDonations.CheckState = CheckState.Unchecked;
|
|
tcMain.TabPages.Remove(tabDonations);
|
|
}
|
|
else
|
|
{
|
|
tsmiDonations.Checked = true;
|
|
tsmiDonations.CheckState = CheckState.Checked;
|
|
tcMain.TabPages.Add(tabDonations);
|
|
tcMain.SelectTab(tabDonations);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Toggles the visibility of the toolbar.
|
|
/// </summary>
|
|
private void ViewToolbar_Click(object sender, EventArgs e)
|
|
{
|
|
if (tsMain.Visible)
|
|
{
|
|
tsMain.Visible = false;
|
|
tsmiToolbar.Checked = false;
|
|
tsmiToolbar.CheckState = CheckState.Unchecked;
|
|
}
|
|
else
|
|
{
|
|
tsMain.Visible = true;
|
|
tsmiToolbar.Checked = true;
|
|
tsmiToolbar.CheckState = CheckState.Checked;
|
|
}
|
|
}
|
|
|
|
private delegate void EnableAllButtonsDelegate();
|
|
|
|
/// <summary>
|
|
/// Enables all of the buttons.
|
|
/// </summary>
|
|
private void EnableAllButtons()
|
|
{
|
|
// Enable all Menu Item buttons.
|
|
tsmiCommands.Enabled = true;
|
|
tsmiBuildDat.Enabled = true;
|
|
tsmiLoadOptions.Enabled = true;
|
|
tsmiSaveOptions.Enabled = true;
|
|
tsmiSaveLog.Enabled = true;
|
|
tsmiExit.Enabled = true;
|
|
|
|
// Enable all Toolbar buttons.
|
|
tsbBuildDat.Enabled = true;
|
|
tsbLoadOptions.Enabled = true;
|
|
tsbSaveOptions.Enabled = true;
|
|
tsbSaveLog.Enabled = true;
|
|
|
|
// Enable all Options checkboxes and textboxes and comboboxes.
|
|
chkIncludeCRC32Hash.Enabled = true;
|
|
chkIncludeFileSize.Enabled = true;
|
|
chkIncludeMD5Hash.Enabled = true;
|
|
chkIncludeSHA1Hash.Enabled = true;
|
|
chkIncludeFileSize.Enabled = true;
|
|
chkAppendGameCountToFilename.Enabled = true;
|
|
chkAppendGameCountToDescription.Enabled = true;
|
|
chkAppendVersionToFilename.Enabled = true;
|
|
chkAppendVersionToDescription.Enabled = true;
|
|
chkIncludeROMDirRootFiles.Enabled = true;
|
|
txtDatFilename.Enabled = true;
|
|
cbXMLEncoding.Enabled = true;
|
|
cbXMLDOCTYPE.Enabled = true;
|
|
chkIncludeDefaultHeaderName.Enabled = true;
|
|
chkIncludeDefaultHeaderDescription.Enabled = true;
|
|
chkIncludeDefaultHeaderVersion.Enabled = true;
|
|
chkIncludeDefaultHeaderDate.Enabled = true;
|
|
chkIncludeDefaultHeaderAuthor.Enabled = true;
|
|
chkIncludeDefaultHeaderEmail.Enabled = true;
|
|
chkIncludeDefaultHeaderHomepage.Enabled = true;
|
|
chkIncludeDefaultHeaderURL.Enabled = true;
|
|
chkIncludeDefaultHeaderComment.Enabled = true;
|
|
chkIncludeDefaultHeaderCategory.Enabled = true;
|
|
chkIncludeDefaultHeaderCMPForceUnzip.Enabled = true;
|
|
txtOverrideHeaderName.Enabled = true;
|
|
txtOverrideHeaderDescription.Enabled = true;
|
|
txtOverrideHeaderVersion.Enabled = true;
|
|
txtOverrideHeaderDate.Enabled = true;
|
|
txtOverrideHeaderAuthor.Enabled = true;
|
|
txtOverrideHeaderEmail.Enabled = true;
|
|
txtOverrideHeaderHomepage.Enabled = true;
|
|
txtOverrideHeaderURL.Enabled = true;
|
|
txtOverrideHeaderComment.Enabled = true;
|
|
txtOverrideHeaderCategory.Enabled = true;
|
|
txtDownloadEmAllUsername.Enabled = true;
|
|
txtDownloadEmAllPassword.Enabled = true;
|
|
txtPathDatsDir.Enabled = true;
|
|
txtPathROMsDir.Enabled = true;
|
|
chkCheckForLatestVersion.Enabled = true;
|
|
chkCheckSSLCertificates.Enabled = true;
|
|
chkSendErrorReports.Enabled = true;
|
|
cbLanguageLocality.Enabled = true;
|
|
cbLogLevel.Enabled = true;
|
|
}
|
|
|
|
private delegate void DisableAllButtonsDelegate();
|
|
|
|
/// <summary>
|
|
/// Disables all of the buttons.
|
|
/// </summary>
|
|
private void DisableAllButtons()
|
|
{
|
|
// Disable all Menu Item buttons.
|
|
tsmiCommands.Enabled = false;
|
|
tsmiBuildDat.Enabled = false;
|
|
tsmiLoadOptions.Enabled = false;
|
|
tsmiSaveOptions.Enabled = false;
|
|
tsmiSaveLog.Enabled = false;
|
|
tsmiExit.Enabled = false;
|
|
|
|
// Disable all Toolbar buttons.
|
|
tsbBuildDat.Enabled = false;
|
|
tsbLoadOptions.Enabled = false;
|
|
tsbSaveOptions.Enabled = false;
|
|
tsbSaveLog.Enabled = false;
|
|
|
|
// Disable all Options checkboxes and textboxes and comboboxes.
|
|
chkIncludeCRC32Hash.Enabled = false;
|
|
chkIncludeFileSize.Enabled = false;
|
|
chkIncludeMD5Hash.Enabled = false;
|
|
chkIncludeSHA1Hash.Enabled = false;
|
|
chkIncludeFileSize.Enabled = false;
|
|
chkAppendGameCountToFilename.Enabled = false;
|
|
chkAppendGameCountToDescription.Enabled = false;
|
|
chkAppendVersionToFilename.Enabled = false;
|
|
chkAppendVersionToDescription.Enabled = false;
|
|
chkIncludeROMDirRootFiles.Enabled = false;
|
|
txtDatFilename.Enabled = false;
|
|
cbXMLEncoding.Enabled = false;
|
|
cbXMLDOCTYPE.Enabled = false;
|
|
chkIncludeDefaultHeaderName.Enabled = false;
|
|
chkIncludeDefaultHeaderDescription.Enabled = false;
|
|
chkIncludeDefaultHeaderVersion.Enabled = false;
|
|
chkIncludeDefaultHeaderDate.Enabled = false;
|
|
chkIncludeDefaultHeaderAuthor.Enabled = false;
|
|
chkIncludeDefaultHeaderEmail.Enabled = false;
|
|
chkIncludeDefaultHeaderHomepage.Enabled = false;
|
|
chkIncludeDefaultHeaderURL.Enabled = false;
|
|
chkIncludeDefaultHeaderComment.Enabled = false;
|
|
chkIncludeDefaultHeaderCategory.Enabled = false;
|
|
chkIncludeDefaultHeaderCMPForceUnzip.Enabled = false;
|
|
txtOverrideHeaderName.Enabled = false;
|
|
txtOverrideHeaderDescription.Enabled = false;
|
|
txtOverrideHeaderVersion.Enabled = false;
|
|
txtOverrideHeaderDate.Enabled = false;
|
|
txtOverrideHeaderAuthor.Enabled = false;
|
|
txtOverrideHeaderEmail.Enabled = false;
|
|
txtOverrideHeaderHomepage.Enabled = false;
|
|
txtOverrideHeaderURL.Enabled = false;
|
|
txtOverrideHeaderComment.Enabled = false;
|
|
txtOverrideHeaderCategory.Enabled = false;
|
|
txtDownloadEmAllUsername.Enabled = false;
|
|
txtDownloadEmAllPassword.Enabled = false;
|
|
txtPathDatsDir.Enabled = false;
|
|
txtPathROMsDir.Enabled = false;
|
|
chkCheckForLatestVersion.Enabled = false;
|
|
chkCheckSSLCertificates.Enabled = false;
|
|
chkSendErrorReports.Enabled = false;
|
|
cbLanguageLocality.Enabled = false;
|
|
cbLogLevel.Enabled = false;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Builders
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void BuildDat_DoWork(object sender, DoWorkEventArgs e)
|
|
{
|
|
// Run dat builder.
|
|
DEA.BuildADat(sender, e);
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void BuildDat_ProgressChanged(object sender, ProgressChangedEventArgs e)
|
|
{
|
|
// Display the changed progress status.
|
|
// UpdateStatusBuildProgress(e.ProgressPercentage);
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void BuildDat_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
|
|
{
|
|
if (e.Cancelled)
|
|
{
|
|
// Print to screen
|
|
Log.Information("Dat builder canceled");
|
|
}
|
|
else if (e.Error != null)
|
|
{
|
|
// Print to screen
|
|
Log.Error("Dat builder failed");
|
|
Log.Error(e.Error.Message);
|
|
}
|
|
else
|
|
{
|
|
//
|
|
}
|
|
|
|
// Reset the progress status.
|
|
// UpdateStatusBuildProgress(0);
|
|
|
|
// Disable the cancel button.
|
|
tssbCancel.Enabled = false;
|
|
|
|
// Print to screen
|
|
Log.Information("Ready");
|
|
|
|
// Update the status message label.
|
|
UpdateStatusMessageLabel("Ready");
|
|
|
|
// Enable all buttons.
|
|
Invoke(new EnableAllButtonsDelegate(EnableAllButtons));
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
}
|