private void Start(MainWindow window, string[] args)
{
window.MaxLogLevel = LogLevel.Info;
Display.SetDisplay(window);
Log.AddLogger(window);
// Parse arguments, display help screen when appropriate
var options = new ProgramOptions();
try
{
options.Load(args);
}
catch (Exception ex)
{
Display.WriteText("Bad options: {0}\n\n{1}", ex.Message, options.GetOptions());
window.Terminate(true);
return;
}
if (options.ShowHelp)
{
Display.WriteText("{0}", options.GetOptions());
window.Terminate(true);
return;
}
// Set log level from options
window.MaxLogLevel = options.ConsoleLogLevel >= 0 && options.ConsoleLogLevel <= 4 ? (LogLevel)options.ConsoleLogLevel : LogLevel.Info;
// Set initial window state
if (options.StartWindowMaximized)
{
window.WindowState = WindowState.Maximized;
}
else if (options.StartWindowMinimized)
{
window.WindowState = WindowState.Minimized;
}
// Run in the background
new Task(() =>
{
Main(options);
window.Terminate(!options.ExitWhenDone);
}).Start();
}