Exemple #1
0
 private void ElementRemoved(ContentElementViewModel obj)
 {
     if (!(obj is ResourceElementViewModel))
     {
         return;
     }
     LogManager.AddLogItem("Resource-using element has been deleted, running a resource cleanup.");
     CleanupResources();
 }
Exemple #2
0
 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.");
     }
 }
Exemple #3
0
        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);
            }
        }
Exemple #4
0
        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
        }