private void ElementRemoved(ContentElementViewModel obj) { if (!(obj is ResourceElementViewModel)) { return; } LogManager.AddLogItem("Resource-using element has been deleted, running a resource cleanup."); CleanupResources(); }
public ResourceViewModel AddResource(FileStream stream) { LogManager.AddLogItem($"Adding resource from file stream: {stream.Name}"); try { return(AddResource(stream, stream.Name)); } finally { stream.Dispose(); LogManager.AddLogItem("Done, file stream disposed."); } }
private void CleanupResources() { var usedResources = Pages.Select(p => p.Elements) .SelectMany(o => o) .OfType <ResourceElementViewModel>() .Select(e => e.Resource); foreach (var resource in Resources.Where(r => usedResources.All(used => !Equals(used, r))).ToList()) { LogManager.AddLogItem($"Cleaned up unused resource: {resource.Name}, freeing {resource.Data.Length} bytes."); resource.Dispose(); Resources.Remove(resource); } }
public ResourceViewModel AddResource(MemoryStream stream, string name) { LogManager.AddLogItem($"Adding resource from stream: {name}"); var testResource = GetExistingResource(stream); if (testResource != null) { LogManager.AddLogItem($"Resource already found: {testResource.Name} ; hash: {testResource.DataMD5Hash}"); return(testResource); } var fileName = CreateResourceName(name); var resource = new ResourceViewModel(new Resource(fileName, stream)); Resources.Add(resource); LogManager.AddLogItem($"Added new resource: {resource.Name}"); return(resource); }
private void Initialize(Window owner = null) { if (owner != null) { Owner = owner; owner.WindowState = WindowState.Minimized; owner.Hide(); FullScreenshot = ScreenshotHelper.TakeScreenshot(true, out _usedScreen); owner.Show(); } else { FullScreenshot = ScreenshotHelper.TakeScreenshot(true, out _usedScreen); } LogManager.AddLogItem($"UsedScreen: left: {_usedScreen.Bounds.Left}", "Screenshot.Initialize"); Left = _usedScreen.Bounds.Left; // ensure multi screen Top = 0; Width = 1; // This is a trick to reduce the maximizing visuals. Height = 1; WindowState = WindowState.Maximized; #if DEBUG LogManager.AddLogItem($"My left is: {Left}"); #endif }