public MainWindow() { Application.Current.MainWindow = this; _cancelled = false; if (AppArguments.Values.Any()) { ProcessArguments(); } if (_testGameDialog != null) { Logging.Write("Testing mode"); var ui = new GameDialog(); ui.ShowDialogWithoutBlocking(); ((IGameUi)ui).OnResult(JsonConvert.DeserializeObject<Game.Result>(FileUtils.ReadAllText(_testGameDialog)), null); _cancelled = true; } if (_cancelled) { Close(); return; } DataContext = new ViewModel(); InputBindings.AddRange(new[] { new InputBinding(new NavigateCommand(this, AppStrings.Main_About), new KeyGesture(Key.F1, ModifierKeys.Alt)), new InputBinding(new NavigateCommand(this, AppStrings.Main_Drive), new KeyGesture(Key.F1)), new InputBinding(new NavigateCommand(this, AppStrings.Main_Media), new KeyGesture(Key.F2)), new InputBinding(new NavigateCommand(this, AppStrings.Main_Content), new KeyGesture(Key.F3)), new InputBinding(new NavigateCommand(this, AppStrings.Main_Settings), new KeyGesture(Key.F4)) }); InitializeComponent(); LinkNavigator.Commands.Add(new Uri("cmd://enterkey"), Model.EnterKeyCommand); AppKeyHolder.ProceedMainWindow(this); foreach (var result in MenuLinkGroups.OfType<LinkGroupFilterable>() .Where(x => x.Source.OriginalString.Contains(@"/online.xaml", StringComparison.OrdinalIgnoreCase))) { result.LinkChanged += OnlineLinkChanged; } foreach (var result in MenuLinkGroups.OfType<LinkGroupFilterable>() .Where(x => x.GroupKey == "content")) { result.LinkChanged += ContentLinkChanged; } UpdateLiveTabs(); SettingsHolder.Live.PropertyChanged += Live_PropertyChanged; UpdateServerTab(); SettingsHolder.Online.PropertyChanged += Online_PropertyChanged; if (!OfficialStarterNotification() && PluginsManager.Instance.HasAnyNew()) { Toast.Show("Don’t forget to install plugins!", ""); // TODO? } EntryPoint.HandleSecondInstanceMessages(this, HandleMessagesAsync); }