diff --git a/.gitignore b/.gitignore index 154e127..7fd6777 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ +tmp/ + ## Ignore Visual Studio temporary files, build results, and ## files generated by popular Visual Studio add-ons. ## diff --git a/src/RamanApp/App.axaml.cs b/src/RamanApp/App.axaml.cs index b478874..4d40d83 100644 --- a/src/RamanApp/App.axaml.cs +++ b/src/RamanApp/App.axaml.cs @@ -1,3 +1,5 @@ +using System; +using System.Linq; using Avalonia; using Avalonia.Controls; using Avalonia.Controls.ApplicationLifetimes; @@ -16,9 +18,42 @@ public partial class App : Application { if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) { - desktop.MainWindow = new MainWindow(); + int simulateIndex = ParseSimulateArg(desktop.Args); + var noiseRange = ParseRangeArg(desktop.Args); + desktop.MainWindow = new MainWindow(simulateIndex, noiseRange); } base.OnFrameworkInitializationCompleted(); } + + private static int ParseSimulateArg(string[]? args) + { + if (args == null) return -1; + for (int i = 0; i < args.Length; i++) + { + if (string.Equals(args[i], "--simulate", StringComparison.OrdinalIgnoreCase)) + { + if (i + 1 < args.Length && int.TryParse(args[i + 1], out int idx) && idx >= 1 && idx <= 4) + return idx; + return 1; + } + } + return -1; + } + + private static (double Lo, double Hi)? ParseRangeArg(string[]? args) + { + if (args == null) return null; + for (int i = 0; i < args.Length; i++) + { + if (string.Equals(args[i], "--range", StringComparison.OrdinalIgnoreCase) + && i + 2 < args.Length + && double.TryParse(args[i + 1], System.Globalization.CultureInfo.InvariantCulture, out double lo) + && double.TryParse(args[i + 2], System.Globalization.CultureInfo.InvariantCulture, out double hi)) + { + return (lo, hi); + } + } + return null; + } } diff --git a/src/RamanApp/MainWindow.axaml b/src/RamanApp/MainWindow.axaml index ae70a06..9cacd6f 100644 --- a/src/RamanApp/MainWindow.axaml +++ b/src/RamanApp/MainWindow.axaml @@ -206,7 +206,7 @@ - - -