private static void CheckForUpdatesComplete(AsyncTaskData taskData) { var data = (CheckForUpdatesTaskData)taskData; var appInfo = SingleInstanceApplication.AppInfo; if (taskData.Error != null) { var reportError = INTV.Shared.Properties.Settings.Default.ShowDetailedErrors; var message = string.Empty; if (data.CheckingAtStartup) { message = Resources.Strings.CheckForUpdatesCommand_FailedStopAsking; } else { if (reportError) { message = Resources.Strings.CheckForUpdatesCommand_Failed; } else { message = string.Format(Resources.Strings.CheckForUpdatesCommand_FailedFormat, data.Error.Message); } } if (reportError || !data.CheckingAtStartup) { OSMessageBox.Show(message, Resources.Strings.CheckForUpdatesCommand_DialogTitle, reportError ? data.Error : null, OSMessageBoxButton.OK); } } else { var message = string.Empty; if (data.UpdateAvailable) { message = string.Format(Resources.Strings.CheckForUpdatesCommand_UpdateAvailableFormat, data.VersionString, appInfo.ProductUrl, data.UpdateVersionString); } else if (!data.CheckingAtStartup) { message = Resources.Strings.CheckForUpdatesCommand_NoUpdates; } if (!string.IsNullOrEmpty(message)) { var result = OSMessageBox.Show(message, Resources.Strings.CheckForUpdatesCommand_DialogTitle, data.UpdateAvailable ? OSMessageBoxButton.YesNo : OSMessageBoxButton.OK); if (data.UpdateAvailable && (result == OSMessageBoxResult.Yes)) { try { RunExternalProgram.OpenInDefaultProgram(appInfo.ProductUrl); } catch (System.Exception e) { message = string.Format(Resources.Strings.CheckForUpdatesCommand_OpenBrowserFailedFormat, e.Message); OSMessageBox.Show(message, Resources.Strings.CheckForUpdatesCommand_DialogTitle); } } } } }
private static void ShowInstalledDocuments(object parameter) { try { RunExternalProgram.OpenInDefaultProgram(DocumentationPath); } catch (Exception) { // Ignore errors. } }
private static void ShowGettingStarted(object parameter) { try { RunExternalProgram.OpenInDefaultProgram(GettingStartedPath); } catch (System.IO.FileNotFoundException) { // ignore failure } }
private static void FirmwareUpdateCompleteHandler(bool cancelled, bool didShowProgress, object result, string firmwareFile) { var title = string.Empty; var message = string.Empty; var dialogButtons = OSMessageBoxButton.OK; if (cancelled) { title = Resources.Strings.Firmware_UpdateFirmwareCommand_Cancelled_Title; message = Resources.Strings.Firmware_UpdateFirmwareCommand_CancelledMessage; } else { var firmwareVersion = (FirmwareRevisions)result; title = Resources.Strings.Firmware_UpdateFirmwareCommand_Complete_Title; message = string.Format(System.Globalization.CultureInfo.CurrentCulture, Resources.Strings.Firmware_UpdateFirmwareCommand_CompleteMessageFormat, FirmwareRevisions.FirmwareVersionToString(firmwareVersion.Current, false)); } var updateNotesFile = System.IO.Path.ChangeExtension(firmwareFile, ".txt"); var showReadme = System.IO.File.Exists(updateNotesFile); if (System.IO.File.Exists(updateNotesFile)) { message += System.Environment.NewLine + System.Environment.NewLine + Resources.Strings.FirmwareUpdate_ShowReadmePrompt; dialogButtons = OSMessageBoxButton.YesNo; } // FIXME On Mac, OK and Yes are the same value, which is different than in Windows. // As a result, we can't rely on the dialog buttons mode to give a distinct answer, // so we double-check the return value *AND* whether readme exists. Ideally, the message // box result would be distinct. This means changing implementation of OSMessageBox and // all the other cases where the code calls RunModal() and simply casts the return value. var yesOrOK = OSMessageBox.Show(message, title, dialogButtons) == OSMessageBoxResult.Yes; if (showReadme && System.IO.File.Exists(updateNotesFile) && yesOrOK) { try { RunExternalProgram.OpenInDefaultProgram(updateNotesFile); } catch (System.InvalidOperationException) { // Silently fail. } } }