using System;
using System.Globalization;
using System.Windows.Forms;
using Microsoft.SqlServer.MessageBox;
using ReClassNET.Core;
using ReClassNET.Forms;
using ReClassNET.Logger;
using ReClassNET.Native;
using ReClassNET.UI;
namespace ReClassNET
{
static class Program
{
public static Settings Settings { get; private set; }
public static ILogger Logger { get; private set; }
public static Random GlobalRandom { get; } = new Random();
public static MainForm MainForm { get; private set; }
public static bool DesignMode { get; private set; } = true;
[STAThread]
static void Main()
{
DesignMode = false; // The designer doesn't call Main()
try
{
DpiUtil.ConfigureProcess();
}
catch
{
}
NativeMethods.EnableDebugPrivileges();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
CultureInfo.DefaultThreadCurrentCulture = CultureInfo.InvariantCulture;
Settings = Settings.Load(Constants.SettingsFile);
Logger = new GuiLogger();
#if DEBUG
using (var coreFunctions = new CoreFunctionsManager())
{
MainForm = new MainForm(coreFunctions);
Application.Run(MainForm);
}
#else
try
{
using (var nativeHelper = new CoreFunctionsManager())
{
MainForm = new MainForm(nativeHelper);
Application.Run(MainForm);
}
}
catch (Exception ex)
{
ShowException(ex);
}
#endif
Settings.Save(Settings, Constants.SettingsFile);
}
/// Shows the exception in a special form.
/// The exception.
public static void ShowException(Exception ex)
{
ex.HelpLink = Constants.HelpUrl;
var msg = new ExceptionMessageBox(ex)
{
ShowToolBar = true,
Symbol = ExceptionMessageBoxSymbol.Error
};
msg.Show(null);
}
}
}