Code/InteractiveComputer/ComputerAppRegistry.cs
using System;
using System.Collections.Generic;
using System.Linq;
using PaneOS.InteractiveComputer.Apps;
namespace PaneOS.InteractiveComputer;
public static class ComputerAppRegistry
{
private static readonly List<ComputerAppDescriptor> registeredApps = new()
{
new ComputerAppDescriptor
{
Id = "system.about",
Title = "My Computer",
Icon = "PC",
SortOrder = 0,
DefaultWindowWidth = 405,
DefaultWindowHeight = 880,
StorageSpaceUsedGb = 0.08f,
ExpectedCoreCountUsageAvg = 0.08f,
ExpectedAvgCpuCoreUsagePercent = 7f,
ExpectedAvgRamUsageMb = 88f,
ExpectedAvgGpuCoreUsagePercent = 0.5f,
ExpectedAvgGpuVramUsagePercent = 0.5f,
CanUninstallFromControlPanel = false,
SingleInstance = false,
Factory = () => new AboutComputerApp()
},
new ComputerAppDescriptor
{
Id = "system.settings",
Title = "Control Panel",
Icon = "CP",
SortOrder = 5,
DefaultWindowWidth = 640,
DefaultWindowHeight = 560,
StorageSpaceUsedGb = 0.09f,
ExpectedCoreCountUsageAvg = 0.14f,
ExpectedAvgCpuCoreUsagePercent = 8f,
ExpectedAvgRamUsageMb = 94f,
ExpectedAvgGpuCoreUsagePercent = 0.4f,
ExpectedAvgGpuVramUsagePercent = 0.4f,
CanUninstallFromControlPanel = false,
SingleInstance = true,
Factory = () => new SettingsApp()
},
new ComputerAppDescriptor
{
Id = "system.notepad",
Title = "Notepad",
Icon = "NP",
SortOrder = 10,
DefaultWindowWidth = 680,
DefaultWindowHeight = 520,
StorageSpaceUsedGb = 0.06f,
ExpectedCoreCountUsageAvg = 0.1f,
ExpectedAvgCpuCoreUsagePercent = 8f,
ExpectedAvgRamUsageMb = 72f,
ExpectedAvgGpuCoreUsagePercent = 0.25f,
ExpectedAvgGpuVramUsagePercent = 0.25f,
AssociatedFileExtensions = new[] { ".txt", ".log", ".md", ".json" },
SingleInstance = false,
Factory = () => new NotepadApp()
},
new ComputerAppDescriptor
{
Id = "system.ridge",
Title = "Ridge",
Icon = "RG",
SortOrder = 15,
DefaultWindowWidth = 760,
DefaultWindowHeight = 520,
StorageSpaceUsedGb = 0.24f,
ExpectedCoreCountUsageAvg = 0.3f,
ExpectedAvgCpuCoreUsagePercent = 14f,
ExpectedAvgRamUsageMb = 196f,
ExpectedAvgGpuCoreUsagePercent = 4f,
ExpectedAvgGpuVramUsagePercent = 5f,
ChanceToStopRespondingPerMinute = 0.006f,
ChanceOfMemoryLeakPerMinute = 0.01f,
AssociatedFileExtensions = new[] { ".url", ".html", ".htm" },
CanUninstallFromControlPanel = false,
SingleInstance = false,
Factory = () => new RidgeBrowserApp()
},
new ComputerAppDescriptor
{
Id = "system.paneexplorer",
Title = "Pane Explorer",
Icon = "PE",
SortOrder = 18,
DefaultWindowWidth = 720,
DefaultWindowHeight = 675,
StorageSpaceUsedGb = 0.18f,
ExpectedCoreCountUsageAvg = 0.2f,
ExpectedAvgCpuCoreUsagePercent = 9f,
ExpectedAvgRamUsageMb = 132f,
ExpectedAvgGpuCoreUsagePercent = 1.2f,
ExpectedAvgGpuVramUsagePercent = 1f,
CanUninstallFromControlPanel = false,
SingleInstance = false,
Factory = () => new PaneExplorerApp()
},
new ComputerAppDescriptor
{
Id = "system.taskmanager",
Title = "Task Manager",
Icon = "TM",
SortOrder = 20,
DefaultWindowWidth = 432,
DefaultWindowHeight = 750,
StorageSpaceUsedGb = 0.09f,
ExpectedCoreCountUsageAvg = 0.2f,
ExpectedAvgCpuCoreUsagePercent = 11f,
ExpectedAvgRamUsageMb = 118f,
ExpectedAvgGpuCoreUsagePercent = 1f,
ExpectedAvgGpuVramUsagePercent = 1f,
CanUninstallFromControlPanel = false,
Factory = () => new TaskManagerApp()
},
new ComputerAppDescriptor
{
Id = "system.calculator",
Title = "Calculator",
Icon = "CA",
SortOrder = 22,
DefaultWindowWidth = 300,
DefaultWindowHeight = 330,
StorageSpaceUsedGb = 0.04f,
ExpectedCoreCountUsageAvg = 0.08f,
ExpectedAvgCpuCoreUsagePercent = 5f,
ExpectedAvgRamUsageMb = 58f,
ExpectedAvgGpuCoreUsagePercent = 0.15f,
ExpectedAvgGpuVramUsagePercent = 0.15f,
SingleInstance = false,
Factory = () => new CalculatorApp()
},
new ComputerAppDescriptor
{
Id = "system.paint",
Title = "Paint",
Icon = "PT",
SortOrder = 24,
DefaultWindowWidth = 700,
DefaultWindowHeight = 520,
StorageSpaceUsedGb = 0.07f,
ExpectedCoreCountUsageAvg = 0.16f,
ExpectedAvgCpuCoreUsagePercent = 8f,
ExpectedAvgRamUsageMb = 104f,
ExpectedAvgGpuCoreUsagePercent = 2f,
ExpectedAvgGpuVramUsagePercent = 1.5f,
AssociatedFileExtensions = new[] { ".png", ".jpg", ".jpeg", ".bmp", ".gif" },
SingleInstance = false,
Factory = () => new PaintApp()
},
new ComputerAppDescriptor
{
Id = "system.mediaplayer",
Title = "Media Player",
Icon = "MP",
SortOrder = 26,
DefaultWindowWidth = 640,
DefaultWindowHeight = 420,
StorageSpaceUsedGb = 0.11f,
ExpectedCoreCountUsageAvg = 0.2f,
ExpectedAvgCpuCoreUsagePercent = 10f,
ExpectedAvgRamUsageMb = 126f,
ExpectedAvgGpuCoreUsagePercent = 2.5f,
ExpectedAvgGpuVramUsagePercent = 2f,
AssociatedFileExtensions = new[] { ".mp3", ".wav", ".ogg", ".mp4", ".webm", ".avi" },
SingleInstance = false,
Factory = () => new MediaPlayerApp()
},
new ComputerAppDescriptor
{
Id = "system.paneos32",
Title = "PaneOS32",
Icon = "32",
SortOrder = 1000,
ShowOnDesktop = false,
ShowInStartMenu = false,
ShowInTaskbar = false,
ShowInControlPanel = false,
HasWindow = false,
IsBackgroundProcess = true,
RunOnStartup = true,
StorageSpaceUsedGb = 0.9f,
ExpectedCoreCountUsageAvg = 1f,
ExpectedAvgCpuCoreUsagePercent = 72f,
ExpectedAvgRamUsageMb = 368f,
ExpectedAvgRamUsagePercentOverride = 18f,
ExpectedAvgGpuCoreUsagePercent = 0.2f,
ExpectedAvgGpuVramUsagePercent = 0.2f,
Factory = () => new BackgroundProcessApp( "PaneOS32.exe", "32" )
},
new ComputerAppDescriptor
{
Id = "system.networking",
Title = "Networking",
Icon = "NW",
SortOrder = 1001,
ShowOnDesktop = false,
ShowInStartMenu = false,
ShowInTaskbar = false,
ShowInControlPanel = false,
HasWindow = false,
IsBackgroundProcess = true,
RunOnStartup = true,
StorageSpaceUsedGb = 0.14f,
ExpectedCoreCountUsageAvg = 0.12f,
ExpectedAvgCpuCoreUsagePercent = 55f,
ExpectedAvgRamUsageMb = 150f,
ExpectedAvgGpuCoreUsagePercent = 0f,
ExpectedAvgGpuVramUsagePercent = 0f,
Factory = () => new BackgroundProcessApp( "Networking.exe", "NW" )
},
new ComputerAppDescriptor
{
Id = "system.pvchost",
Title = "PvcHost",
Icon = "PV",
SortOrder = 1002,
ShowOnDesktop = false,
ShowInStartMenu = false,
ShowInTaskbar = false,
ShowInControlPanel = false,
HasWindow = false,
IsBackgroundProcess = true,
RunOnStartup = true,
StorageSpaceUsedGb = 0.12f,
ExpectedCoreCountUsageAvg = 0.1f,
ExpectedAvgCpuCoreUsagePercent = 58f,
ExpectedAvgRamUsageMb = 160f,
ExpectedAvgGpuCoreUsagePercent = 0f,
ExpectedAvgGpuVramUsagePercent = 0f,
Factory = () => new BackgroundProcessApp( "PvcHost.exe", "PV" )
}
};
public static IReadOnlyList<ComputerAppDescriptor> Apps => registeredApps
.OrderBy( x => x.SortOrder )
.ThenBy( x => x.Title )
.ToArray();
public static void Refresh()
{
}
public static void Register( ComputerAppDescriptor descriptor )
{
registeredApps.RemoveAll( x => x.Id == descriptor.Id );
registeredApps.Add( descriptor );
}
}