using CommunityToolkit.Mvvm.ComponentModel;
|
using NationalInstruments.TestStand.Interop.API;
|
using System.Collections.ObjectModel;
|
using System.Runtime.InteropServices;
|
|
namespace Plugin.SeqEditor.Entity
|
{
|
public partial class StepUI : ObservableObject
|
{
|
|
~StepUI()
|
{
|
if (step != null)
|
{
|
Marshal.ReleaseComObject(step);
|
}
|
}
|
|
public Step step { get; private set; }
|
public Sequence sequence { get; private set; }
|
|
public event EventHandler<string> SettingChanged;
|
|
public int IndexInSequence {
|
get {
|
return sequence.GetStepIndex(Name, StepGroup);
|
}
|
}
|
|
public StepUI(Step step, Sequence sequence)
|
{
|
this.step = step;
|
this.sequence = sequence;
|
}
|
|
public void UpdatePropertyChanged(string name)
|
{
|
OnPropertyChanged(name);
|
}
|
|
protected new void OnPropertyChanged(string name)
|
{
|
base.OnPropertyChanged(name);
|
SettingChanged?.Invoke(this, name);
|
}
|
|
public string Name
|
{
|
get => step?.Name;
|
set
|
{
|
if (step != null)
|
{
|
step.Name = value;
|
OnPropertyChanged(nameof(Name));
|
}
|
}
|
}
|
|
public string Description
|
{
|
get => step?.Description;
|
}
|
|
public string RunMode
|
{
|
get => step?.GetRunModeEx();
|
set
|
{
|
if (step != null)
|
{
|
step.SetRunModeEx(value);
|
OnPropertyChanged(nameof(RunMode));
|
}
|
}
|
}
|
|
public string Type
|
{
|
get => step?.StepType?.Name;
|
}
|
|
public bool CanChangeAdapter
|
{
|
get => step?.CanChangeAdapter() ?? true;
|
}
|
|
public string Adapter
|
{
|
get => step?.AdapterKeyName;
|
set
|
{
|
if (step != null)
|
{
|
step.ChangeAdapter(value);
|
OnPropertyChanged(nameof(RunMode));
|
}
|
}
|
}
|
|
public StepGroups StepGroup
|
{
|
get
|
{
|
return step.StepGroup;
|
}
|
}
|
|
[ObservableProperty]
|
private string group;
|
|
[ObservableProperty]
|
public ObservableCollection<StepUI> children = new();
|
|
public override string ToString()
|
{
|
return Name;
|
}
|
}
|
}
|