using System;
using System.Text.Json.Serialization;
using Avalonia.Controls;
using CommunityToolkit.Mvvm.ComponentModel;
using StabilityMatrix.Avalonia.Models;
using StabilityMatrix.Core.Models.FileInterfaces;
#pragma warning disable CS0657 // Not a valid attribute location for this declaration
namespace StabilityMatrix.Avalonia.ViewModels.Base;
public abstract partial class InferenceTabViewModelBase : LoadableViewModelBase, IDisposable, IPersistentViewProvider
{
///
/// The title of the tab
///
public virtual string TabTitle => ProjectFile?.NameWithoutExtension ?? "New Project";
///
/// Whether there are unsaved changes
///
[ObservableProperty]
[property: JsonIgnore]
private bool hasUnsavedChanges;
///
/// The tab's project file
///
[ObservableProperty]
[NotifyPropertyChangedFor(nameof(TabTitle))]
[property: JsonIgnore]
private FilePath? projectFile;
///
Control? IPersistentViewProvider.AttachedPersistentView { get; set; }
protected virtual void Dispose(bool disposing)
{
if (disposing)
{
((IPersistentViewProvider) this).AttachedPersistentView = null;
}
}
///
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
}