private static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
if (Settings.RunningOnWindows())
{
NBug.Settings.UIMode = NBug.Enums.UIMode.Full;
// Uncomment the following after testing to see that NBug is working as configured
NBug.Settings.ReleaseMode = true;
NBug.Settings.ExitApplicationImmediately = false;
NBug.Settings.WriteLogToDisk = true;
NBug.Settings.MaxQueuedReports = 10;
AppDomain.CurrentDomain.UnhandledException += NBug.Handler.UnhandledException;
Application.ThreadException += NBug.Handler.ThreadException;
}
string[] args = Environment.GetCommandLineArgs();
FormSplash.ShowSplash();
Application.DoEvents();
Settings.LoadSettings();
if (Settings.RunningOnWindows())
{
//Quick HOME check:
FormSplash.SetAction("Checking home path...");
Application.DoEvents();
FormFixHome.CheckHomePath();
}
//Register plugins
FormSplash.SetAction("Loading plugins...");
Application.DoEvents();
if (string.IsNullOrEmpty(Settings.Translation))
{
using (var formChoose = new FormChooseTranslation())
{
formChoose.ShowDialog();
}
}
try
{
if (Application.UserAppDataRegistry == null ||
Settings.GetValue<string>("checksettings", null) == null ||
!Settings.GetValue<string>("checksettings", null).Equals("false", StringComparison.OrdinalIgnoreCase) ||
string.IsNullOrEmpty(Settings.GitCommand))
{
FormSplash.SetAction("Checking settings...");
Application.DoEvents();
GitUICommands uiCommands = new GitUICommands(string.Empty);
var commonLogic = new CommonLogic(uiCommands.Module);
var checkSettingsLogic = new CheckSettingsLogic(commonLogic, uiCommands.Module);
using (var checklistSettingsPage = new ChecklistSettingsPage(commonLogic, checkSettingsLogic, uiCommands.Module, null))
{
checkSettingsLogic.ChecklistSettingsPage = checklistSettingsPage;
if (!checklistSettingsPage.CheckSettings())
{
checkSettingsLogic.AutoSolveAllSettings();
uiCommands.StartSettingsDialog();
}
}
}
}
catch
{
// TODO: remove catch-all
}
FormSplash.HideSplash();
if (Settings.RunningOnWindows())
MouseWheelRedirector.Active = true;
GitUICommands uCommands = new GitUICommands(GetWorkingDir(args));
if (args.Length <= 1)
{
uCommands.StartBrowseDialog();
}
else // if we are here args.Length > 1
{
uCommands.RunCommand(args);
}
Settings.SaveSettings();
}