private void Window_Opened(object sender, EventArgs e) { if (Environment.OSVersion.Version.Major > 5 && PreferencesFile.LoadSetting("ControlCenter", "AeroWarning", true)) { bool aeroEnabled; NativeMethods.DwmIsCompositionEnabled(out aeroEnabled); if (!aeroEnabled) { AeroWarning warningDialog = new AeroWarning(); warningDialog.Owner = this; warningDialog.ShowDialog(); if (warningDialog.DisplayAgainCheckbox.IsChecked == true) { PreferencesFile.SaveSetting("ControlCenter", "AeroWarning", false); } } } App app = Application.Current as App; if (app != null && app.StartupProfile != null && File.Exists(app.StartupProfile)) { LoadProfileList(app.StartupProfile); LoadProfile(app.StartupProfile); StartProfile(); } VersionChecker.Check versionCheck = ConfigManager.VersionChecker.CheckAvailableVersion(false); if (!ConfigManager.VersionChecker.ShouldOfferNewVersion(versionCheck)) { return; } // can't use the interactive dialog, because this would require writing settings StatusMessage = StatusValue.UpgradeAvailable; StatusReportItem item = new StatusReportItem { Status = $"new version {versionCheck.AvailableVersion} is available", Flags = StatusReportItem.StatusFlags.ConfigurationUpToDate }; if (versionCheck.DownloadUrl != null) { item.Link = new Uri(versionCheck.DownloadUrl); item.Recommendation = $"Use Profile Editor to check for new version or download directly from {versionCheck.DownloadUrl}"; } else { item.Link = StatusReportItem.ProfileEditor; item.Recommendation = "check for new version and download it"; } StatusViewer.AddItem(item); }
public CommandResult <bool> Execute(ApplicationDb db) { StatusReportItem item = db.StatusReportItems.Find(this.StatusReportItemId); db.StatusReportItems.Remove(item); db.SaveChanges(); return(new CommandResult <bool> { Data = true, ResultCode = "0", ResultText = "Succesfully created status report item" }); }
private void ReportError(string status, string recommendation, Uri link) { StatusReportItem statusReportItem = new StatusReportItem() { Severity = StatusReportItem.SeverityCode.Error, Status = status, Recommendation = recommendation, Link = link }; StatusViewer.AddItem(statusReportItem); statusReportItem.Log(ConfigManager.LogManager); }
private void ReportStatus(string status, Uri link = null) { if (status.Length < 1) { return; } StatusReportItem statusReportItem = new StatusReportItem() { Status = status, Link = link }; StatusViewer.AddItem(statusReportItem); statusReportItem.Log(ConfigManager.LogManager); }
private static bool WriteBack(IPatchDestinationWritable destination, PatchFile patch, string patched, string verbing, out StatusReportItem status) { if (destination.TryWritePatched(patch.TargetPath, patched)) { status = new StatusReportItem { Status = $"{destination.LongDescription} successfully wrote {patch.TargetPath} after {verbing} patch" }; return(true); } status = new StatusReportItem { Status = $"{destination.LongDescription} could not write {patch.TargetPath} after {verbing} patch", Severity = StatusReportItem.SeverityCode.Error, Recommendation = "please ensure you have write permission to all the files in the target location" }; return(false); }
/// <summary> /// generate the monitor setup file but do not write it out yet /// </summary> /// <returns></returns> private IEnumerable <StatusReportItem> UpdateMonitorSetup(MonitorSetupTemplate template, bool verbose) { List <FormattableString> lines = CreateHeader(template); foreach (StatusReportItem item in GatherViewports(template)) { yield return(item); } // emit in sorted canonical order so we can compare files later foreach (KeyValuePair <string, Rect> viewport in _allViewports.Viewports.OrderBy(p => p.Key)) { if (TryCreateViewport(lines, viewport, out FormattableString code)) { yield return(new StatusReportItem { Status = $"{template.MonitorSetupFileBaseName}: {code}", Flags = INFORMATIONAL }); } else { yield return(new StatusReportItem { Status = $"viewport '{viewport.Key}' was not included in monitor setup because it is not entirely contained in rendered resolution", Severity = StatusReportItem.SeverityCode.Warning, Recommendation = "adjust the viewport location or the monitor layout", Link = StatusReportItem.ProfileEditor, Flags = StatusReportItem.StatusFlags.ConfigurationUpToDate }); } } // find main and ui view extents Rect mainView = Rect.Empty; Rect uiView = Rect.Empty; foreach (ShadowMonitor monitor in _parent.Monitors) { string monitorDescription = $"Monitor at Windows coordinates ({monitor.Monitor.Left},{monitor.Monitor.Top}) of size {monitor.Monitor.Width}x{monitor.Monitor.Height}"; if (!monitor.Included) { if (verbose) { yield return new StatusReportItem { Status = $"{monitorDescription} is not included in monitor setup", Flags = INFORMATIONAL } } ; continue; } Rect rect = MonitorSetup.VisualToRect(monitor.Monitor); if (monitor.Main) { if (_parent.MonitorLayoutMode == MonitorLayoutMode.TopLeftQuarter) { // special Rect scaled = rect; scaled.Scale(0.5d, 0.5d); mainView.Union(scaled); } else { mainView.Union(rect); } if (verbose) { yield return new StatusReportItem { Status = $"{monitorDescription} is used for main view", Flags = INFORMATIONAL } } ; } if (monitor.UserInterface) { uiView.Union(rect); if (verbose) { yield return new StatusReportItem { Status = $"{monitorDescription} is used to display the DCS user interface", Flags = INFORMATIONAL } } ; } if (monitor.ViewportCount > 0) { string plural = monitor.ViewportCount > 1 ? "s" : ""; if (verbose) { yield return new StatusReportItem { Status = $"{monitorDescription} has {monitor.ViewportCount} viewport{plural} from this profile", Flags = INFORMATIONAL } } ; } } // trim to rendered area in case of partial screens mainView.Intersect(_parent.Rendered); uiView.Intersect(_parent.Rendered); // change to DCS coordinates (0,0 at top left of rect, physical pixels) ConvertToDCS(ref mainView); ConvertToDCS(ref uiView); CreateMainView(lines, mainView); if (verbose) { yield return new StatusReportItem { Status = $"MAIN = {{ x = {mainView.Left}, y = {mainView.Top}, width = {mainView.Width}, height = {mainView.Height} }}", Flags = INFORMATIONAL } } ; // check for separate UI view StatusReportItem uiStatus = CreateUserInterfaceViewIfRequired(lines, mainView, uiView, out string uiViewName); if (verbose) { yield return(uiStatus); } // set up required names for viewports (well-known to DCS) lines.Add($"UIMainView = {uiViewName}"); lines.Add($"GU_MAIN_VIEWPORT = Viewports.Center"); foreach (FormattableString line in lines) { ConfigManager.LogManager.LogDebug(FormattableString.Invariant(line)); } if (template.Combined) { _combinedMonitorSetup = Render(lines); } else { _monitorSetup = Render(lines); } }
public static void UpdateStatusItemTags(this ApplicationDb db, string[] hashTags, StatusReportItem item) { Tag tag; StatusReportItemTag statusReportItemTag; foreach (var hashTag in hashTags) { // check if hashtag is already part of tags collection of item tag = item.Tags.Where(t => t.Tag.Name == hashTag).Select(t => t.Tag).SingleOrDefault(); if (tag == null) // no, { tag = db.Tags.Where(t => t.Name == hashTag).SingleOrDefault(); if (tag == null) { // create the tag first tag = db.Tags.Create(); tag.Name = hashTag; db.Tags.Add(tag); db.SaveChanges(); } statusReportItemTag = db.StatusReportItemTags.Create(); statusReportItemTag.TagId = tag.TagId; statusReportItemTag.StatusReportItemId = item.StatusReportItemId; db.StatusReportItemTags.Add(statusReportItemTag); db.SaveChanges(); } } // remove tags foreach (var itemTag in item.Tags.ToArray()) { if (!hashTags.Contains(itemTag.Tag.Name)) { db.StatusReportItemTags.Remove(itemTag); db.SaveChanges(); } } }