using Cosmos.Kernel.System.Graphics; using RemSox.Processing; using RemSox.UI.GUI.Rendering; using RemSox.UI.GUI.Windows; namespace RemSox.Processes; internal class DesktopProcess() : Process("Desktop Manager") { private static bool isGraphicsInitialized = false; internal override void Run(string[] args) { if (!isGraphicsInitialized) { WindowManager.AddRenderSource(new CanvasRenderSource()); isGraphicsInitialized = true; } // Trigger Canvas initialization _ = FullScreenCanvas.GetFullScreenCanvas(); // Force existing windows to redraw onto the new canvas renderer WindowManager.InvalidateAll(); // Start the terminal process within the desktop environment _ = ProcessManager.SpawnProcess(); // Create a test window for new UI controls Window testWindow = WindowManager.CreateWindow(this, "UI Controls Test", new System.Drawing.Point(500, 50), new System.Drawing.Size(200, 180)); _ = testWindow.CreateUIElement(b => { b.Position = new System.Drawing.Point(20, 30); b.Size = new System.Drawing.Size(100, 30); b.Text = "Click Me"; b.BackgroundColor = System.Drawing.Color.LightBlue; }); _ = testWindow.CreateUIElement(c => { c.Position = new System.Drawing.Point(20, 80); c.Text = "Check Me"; c.IsChecked = true; }); _ = testWindow.CreateUIElement(l => { l.Position = new System.Drawing.Point(20, 130); l.EndPosition = new System.Drawing.Point(180, 130); l.Color = System.Drawing.Color.Red; }); testWindow.AutoFlush = true; testWindow.Flush(); while (!StopRequested) { WindowManager.Update(); // Sleep slightly to yield CPU to the main CLI thread (approx 60 FPS) //Thread.Sleep(16); } } }