diff --git a/Kernel.cs b/Kernel.cs index fd9801b..26f0550 100644 --- a/Kernel.cs +++ b/Kernel.cs @@ -24,7 +24,7 @@ public class Kernel : Sys.Kernel new HelpCommand(), new ClearCommand(), new HaltCommand(), - new SpawnTestProcessCommand(), + new SpawnProcessCommand(), new ListProcessesCommand(), new StopProcessCommand(), new StartGuiCommand(), @@ -62,44 +62,6 @@ public class Kernel : Sys.Kernel } } -public class TestProcess() : Process("Test Process") -{ - internal override void Start(string[] args) - { - Window window = WindowManager.CreateWindow(this, "Test Window", Point.Empty, new Size(200, 150)); - window.AutoFlush = true; - - Circle circle = window.CreateUIElement(rect => - { - rect.Position = new Point(10, 10); - rect.Radius = 50; - rect.Color = Color.Red; - }); - - circle.Radius = 40; - - SendMessageToAllProcesses(new TestMessage { SenderProcessId = Id }); - } - - internal override void Tick() - { - // Example tick logic - could be used for animations, timed events, etc. - } - - internal override void HandleInterProcessMessage(Message message) - { - if (message is TestMessage testMessage && message.SenderProcessId != Id) - { - Console.WriteLine($"Received message in {Name} (ID: {Id}): {testMessage.MessageText}"); - } - } -} - -internal class TestMessage : Message -{ - public string MessageText { get; set; } = "Hello from TestMessage!"; -} - public static unsafe partial class StartupCodeHelpers { [RuntimeExport("fmod")] diff --git a/Processes/DesktopProcess.cs b/Processes/DesktopProcess.cs index bb7117e..a1a2ba7 100644 --- a/Processes/DesktopProcess.cs +++ b/Processes/DesktopProcess.cs @@ -30,7 +30,7 @@ internal class DesktopProcess() : Process("Desktop Manager") // 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 => + _ = testWindow.CreateUIElement(b => { b.Position = new System.Drawing.Point(20, 30); b.Size = new System.Drawing.Size(100, 30); @@ -38,14 +38,14 @@ internal class DesktopProcess() : Process("Desktop Manager") b.BackgroundColor = System.Drawing.Color.LightBlue; }); - _ = testWindow.CreateUIElement(c => + _ = testWindow.CreateUIElement(c => { c.Position = new System.Drawing.Point(20, 80); c.Text = "Check Me"; c.IsChecked = true; }); - _ = testWindow.CreateUIElement(l => + _ = testWindow.CreateUIElement(l => { l.Position = new System.Drawing.Point(20, 130); l.EndPosition = new System.Drawing.Point(180, 130); @@ -62,7 +62,7 @@ internal class DesktopProcess() : Process("Desktop Manager") if (!ProcessManager.IsProcessRunning()) { - ProcessManager.SpawnProcess(); + _ = ProcessManager.SpawnProcess(); } } } diff --git a/Processes/TestProcess.cs b/Processes/TestProcess.cs new file mode 100644 index 0000000..47fba4e --- /dev/null +++ b/Processes/TestProcess.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Threading.Tasks; +using RemSox.Processing; +using RemSox.Processing.IPC; +using RemSox.UI.GUI.UIEelements.Shapes; +using RemSox.UI.GUI.Windows; + +namespace RemSox.Processes; + +public class TestProcess() : Process("Test Process") +{ + internal override void Start(string[] args) + { + Window window = WindowManager.CreateWindow(this, "Test Window", Point.Empty, new Size(200, 150)); + window.AutoFlush = true; + + Circle circle = window.CreateUIElement(rect => + { + rect.Position = new Point(10, 10); + rect.Radius = 50; + rect.Color = Color.Red; + }); + + circle.Radius = 40; + + SendMessageToAllProcesses(new TestMessage { SenderProcessId = Id }); + } + + internal override void Tick() + { + // Example tick logic - could be used for animations, timed events, etc. + } + + internal override void HandleInterProcessMessage(Message message) + { + if (message is TestMessage testMessage && message.SenderProcessId != Id) + { + Console.WriteLine($"Received message in {Name} (ID: {Id}): {testMessage.MessageText}"); + } + } +} + +internal class TestMessage : Message +{ + public string MessageText { get; set; } = "Hello from TestMessage!"; +} \ No newline at end of file diff --git a/UI/CLI/Commands/ProcessCommands.cs b/UI/CLI/Commands/ProcessCommands.cs index 9e9d8a6..6411e0f 100644 --- a/UI/CLI/Commands/ProcessCommands.cs +++ b/UI/CLI/Commands/ProcessCommands.cs @@ -1,17 +1,34 @@ +using RemSox.Processes; using RemSox.Processing; namespace RemSox.UI.CLI.Commands; -public sealed class SpawnTestProcessCommand : ICommand +public sealed class SpawnProcessCommand : ICommand { - public string Name => "spawn test"; + public string Name => "spawn"; - public string Description => "Spawn the test process"; + public string Description => "Spawn a new process"; public void Execute(string? arguments, Action printLine) { - int processId = ProcessManager.SpawnProcess(); - printLine($"Spawned TestProcess with ID {processId}"); + arguments = arguments?.Trim(); + + int? processId = arguments switch + { + "test" => ProcessManager.SpawnProcess(), + "terminal" => ProcessManager.SpawnProcess(), + _ => null + }; + + if (processId is not null) + { + printLine($"Spawned process with ID {processId}"); + } + else + { + printLine("Usage: spawn "); + printLine("Available processes: test, terminal"); + } } } diff --git a/UI/GUI/Windows/Window.cs b/UI/GUI/Windows/Window.cs index d8508be..86431cf 100644 --- a/UI/GUI/Windows/Window.cs +++ b/UI/GUI/Windows/Window.cs @@ -27,10 +27,10 @@ public sealed class Window(string title, int processId, int id, IRenderSource re public bool AutoFlush { get; set; } = false; /// Event raised when a keyboard event is handled by this window. - public event Action? OnKeyEvent; + public event Action? OnKeyEvent; /// Dispatches a key event to the window's registered event handlers. - public void HandleKeyEvent(Cosmos.Kernel.System.Keyboard.KeyEvent keyEvent) + public void HandleKeyEvent(Sys.Keyboard.KeyEvent keyEvent) { OnKeyEvent?.Invoke(keyEvent); }