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 @@
-