private void MetroWindow_Closing(object sender, System.ComponentModel.CancelEventArgs e) { if (ServerCheckThread != null) { ServerCheckThread.Abort(); //a join would not work, so we have to be..forcefully... } List<string> lastOpenFiles = new List<string>(); EditorElement[] editors = GetAllEditorElements(); bool? SaveUnsaved = null; if (editors != null) { for (int i = 0; i < editors.Length; ++i) { if (File.Exists(editors[i].FullFilePath)) { lastOpenFiles.Add(editors[i].FullFilePath); if (editors[i].NeedsSave) { if (SaveUnsaved == null) { var result = MessageBox.Show(this, "Save all unsaved files?", "Saving", MessageBoxButton.YesNo, MessageBoxImage.Question); if (result == MessageBoxResult.Yes) { SaveUnsaved = true; } else { SaveUnsaved = false; } } if (SaveUnsaved.Value) { editors[i].Close(true, true); } else { editors[i].Close(false, false); } } else { editors[i].Close(false, false); } } } } Program.OptionsObject.LastOpenFiles = lastOpenFiles.ToArray(); #if !DEBUG if (Program.UpdateStatus.IsAvailable) { UpdateWindow updateWin = new UpdateWindow(Program.UpdateStatus) { Owner = this }; updateWin.ShowDialog(); } #endif }
private void UpdateCheck_Click(object sender, RoutedEventArgs e) { UpdateCheck.Check(false); var status = Program.UpdateStatus; if (status.IsAvailable) { UpdateWindow uWindow = new UpdateWindow(status) { Owner = this }; uWindow.ShowDialog(); if (uWindow.Succeeded) { Command_SaveAll(); lock (Program.UpdateStatus) { Program.UpdateStatus.WriteAble = false; Program.UpdateStatus.IsAvailable = false; } this.Close(); } } else { if (status.GotException) { this.ShowMessageAsync("Failed to check", "Error while checking for updates." + Environment.NewLine + "Details: " + status.ExceptionMessage , MessageDialogStyle.Affirmative, this.MetroDialogOptions); } else { this.ShowMessageAsync("Version up to date", "Your program version " + Assembly.GetEntryAssembly().GetName().Version.ToString() + " is up to date." , MessageDialogStyle.Affirmative, this.MetroDialogOptions); } } }