using System; using System.Text.Json.Nodes; using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using StabilityMatrix.Avalonia.Controls; using StabilityMatrix.Avalonia.Models.Inference; using StabilityMatrix.Avalonia.ViewModels.Base; using StabilityMatrix.Core.Attributes; namespace StabilityMatrix.Avalonia.ViewModels.Inference; [View(typeof(SeedCard))] [ManagedService] [Transient] public partial class SeedCardViewModel : LoadableViewModelBase { [ObservableProperty, NotifyPropertyChangedFor(nameof(RandomizeButtonToolTip))] private bool isRandomizeEnabled = true; [ObservableProperty] private long seed; public string RandomizeButtonToolTip => IsRandomizeEnabled ? "Randomizing Seed on each run" : "Seed is locked"; [RelayCommand] public void GenerateNewSeed() { Seed = Random.Shared.NextInt64(0, int.MaxValue); } /// public override void LoadStateFromJsonObject(JsonObject state) { var model = DeserializeModel(state); Seed = model.Seed; IsRandomizeEnabled = model.IsRandomizeEnabled; } /// public override JsonObject SaveStateToJsonObject() { return SerializeModel( new SeedCardModel { Seed = Seed, IsRandomizeEnabled = IsRandomizeEnabled } ); } }