mirror of
https://gitee.com/akwkevin/aistudio.-wpf.-diagram
synced 2026-03-03 00:00:57 +08:00
968 lines
27 KiB
C#
968 lines
27 KiB
C#
using System;
|
||
using System.Collections.ObjectModel;
|
||
using System.Linq;
|
||
using System.Windows.Media;
|
||
using AIStudio.Wpf.DiagramDesigner;
|
||
using AIStudio.Wpf.DiagramDesigner.Models;
|
||
using AIStudio.Wpf.DiagramDesigner.Services;
|
||
|
||
namespace AIStudio.Wpf.Logical.ViewModels
|
||
{
|
||
public class LogicalGateItemViewModel : LogicalGateItemViewModelBase
|
||
{
|
||
protected IUIVisualizerService visualiserService;
|
||
public LogicalGateItemViewModel(LogicalType logicalType) : base(logicalType)
|
||
{
|
||
ColorViewModel.FillColor.Color = Colors.Orange;
|
||
}
|
||
|
||
public LogicalGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
|
||
{
|
||
|
||
}
|
||
|
||
public LogicalGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
|
||
{
|
||
|
||
}
|
||
|
||
public override SelectableItemBase GetSerializableObject()
|
||
{
|
||
return new LogicalGateDesignerItemBase(this);
|
||
}
|
||
|
||
protected override void Init()
|
||
{
|
||
base.Init();
|
||
|
||
visualiserService = ApplicationServicesProvider.Instance.Provider.VisualizerService;
|
||
}
|
||
|
||
protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase)
|
||
{
|
||
base.LoadDesignerItemViewModel(root, designerbase);
|
||
|
||
if (designerbase is LogicalGateDesignerItemBase designer)
|
||
{
|
||
this.Value = designer.Value;
|
||
}
|
||
}
|
||
|
||
|
||
protected override void ExecuteEditCommand(object parameter)
|
||
{
|
||
if (LogicalType == LogicalType.Constant)
|
||
{
|
||
ValueDesignerItemData data = new ValueDesignerItemData(Value);
|
||
if (visualiserService.ShowDialog(data) == true)
|
||
{
|
||
this.Value = data.Value;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
LogicalGateItemData data = new LogicalGateItemData(Input.Values);
|
||
if (visualiserService.ShowDialog(data) == true)
|
||
{
|
||
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
public class AddGateItemViewModel : LogicalGateItemViewModel
|
||
{
|
||
public AddGateItemViewModel() : base(LogicalType.ADD)
|
||
{
|
||
}
|
||
|
||
public AddGateItemViewModel(IDiagramViewModel root, LogicalGateDesignerItemBase designer) : base(root, designer)
|
||
{
|
||
}
|
||
|
||
public AddGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
public class SubtractGateItemViewModel : LogicalGateItemViewModel
|
||
{
|
||
public SubtractGateItemViewModel() : base(LogicalType.SUB)
|
||
{
|
||
}
|
||
|
||
public SubtractGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
|
||
{
|
||
}
|
||
|
||
public SubtractGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
public class MultiplyGateItemViewModel : LogicalGateItemViewModel
|
||
{
|
||
public MultiplyGateItemViewModel() : base(LogicalType.MUL)
|
||
{
|
||
}
|
||
|
||
public MultiplyGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
|
||
{
|
||
}
|
||
|
||
public MultiplyGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
public class DivideGateItemViewModel : LogicalGateItemViewModel
|
||
{
|
||
|
||
public DivideGateItemViewModel() : base(LogicalType.DIV)
|
||
{
|
||
}
|
||
|
||
public DivideGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
|
||
{
|
||
}
|
||
|
||
public DivideGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
public class AverageGateItemViewModel : LogicalGateItemViewModel
|
||
{
|
||
public AverageGateItemViewModel() : base(LogicalType.AVE)
|
||
{
|
||
|
||
}
|
||
|
||
public AverageGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
|
||
{
|
||
|
||
}
|
||
|
||
public AverageGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
public class MODGateItemViewModel : LogicalGateItemViewModel
|
||
{
|
||
public MODGateItemViewModel() : base(LogicalType.MOD)
|
||
{
|
||
|
||
}
|
||
|
||
public MODGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
|
||
{
|
||
|
||
}
|
||
|
||
public MODGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
public class ANDGateItemViewModel : LogicalGateItemViewModel
|
||
{
|
||
public ANDGateItemViewModel() : base(LogicalType.AND)
|
||
{
|
||
|
||
}
|
||
|
||
public ANDGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
|
||
{
|
||
|
||
}
|
||
|
||
public ANDGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
public class ORGateItemViewModel : LogicalGateItemViewModel
|
||
{
|
||
public ORGateItemViewModel() : base(LogicalType.OR)
|
||
{
|
||
|
||
}
|
||
|
||
public ORGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
|
||
{
|
||
|
||
}
|
||
|
||
public ORGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
public class XORGateItemViewModel : LogicalGateItemViewModel
|
||
{
|
||
public XORGateItemViewModel() : base(LogicalType.XOR)
|
||
{
|
||
|
||
}
|
||
|
||
public XORGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
|
||
{
|
||
|
||
}
|
||
|
||
public XORGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
public class NOTGateItemViewModel : LogicalGateItemViewModel
|
||
{
|
||
public NOTGateItemViewModel() : base(LogicalType.NOT)
|
||
{
|
||
|
||
}
|
||
|
||
public NOTGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
|
||
{
|
||
|
||
}
|
||
|
||
public NOTGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
public class SHLGateItemViewModel : LogicalGateItemViewModel
|
||
{
|
||
public SHLGateItemViewModel() : base(LogicalType.SHL)
|
||
{
|
||
|
||
}
|
||
|
||
public SHLGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
|
||
{
|
||
|
||
}
|
||
|
||
public SHLGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
public class SHRGateItemViewModel : LogicalGateItemViewModel
|
||
{
|
||
public SHRGateItemViewModel() : base(LogicalType.SHR)
|
||
{
|
||
|
||
}
|
||
|
||
public SHRGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
|
||
{
|
||
|
||
}
|
||
|
||
public SHRGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
public class ROLGateItemViewModel : LogicalGateItemViewModel
|
||
{
|
||
public ROLGateItemViewModel() : base(LogicalType.ROL)
|
||
{
|
||
|
||
}
|
||
|
||
public ROLGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
|
||
{
|
||
|
||
}
|
||
|
||
public ROLGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
public class RORGateItemViewModel : LogicalGateItemViewModel
|
||
{
|
||
public RORGateItemViewModel() : base(LogicalType.ROR)
|
||
{
|
||
|
||
}
|
||
|
||
public RORGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
|
||
{
|
||
|
||
}
|
||
|
||
public RORGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
public class SELGateItemViewModel : LogicalGateItemViewModel
|
||
{
|
||
public SELGateItemViewModel() : base(LogicalType.SEL)
|
||
{
|
||
|
||
}
|
||
|
||
public SELGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
|
||
{
|
||
|
||
}
|
||
|
||
public SELGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
public class MAXGateItemViewModel : LogicalGateItemViewModel
|
||
{
|
||
public MAXGateItemViewModel() : base(LogicalType.MAX)
|
||
{
|
||
|
||
}
|
||
|
||
public MAXGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
|
||
{
|
||
|
||
}
|
||
|
||
public MAXGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
public class MINGateItemViewModel : LogicalGateItemViewModel
|
||
{
|
||
public MINGateItemViewModel() : base(LogicalType.MIN)
|
||
{
|
||
|
||
}
|
||
|
||
public MINGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
|
||
{
|
||
|
||
}
|
||
|
||
public MINGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
public class LIMITGateItemViewModel : LogicalGateItemViewModel
|
||
{
|
||
public LIMITGateItemViewModel() : base(LogicalType.LIMIT)
|
||
{
|
||
|
||
}
|
||
|
||
public LIMITGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
|
||
{
|
||
|
||
}
|
||
|
||
public LIMITGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
public class GTGateItemViewModel : LogicalGateItemViewModel
|
||
{
|
||
public GTGateItemViewModel() : base(LogicalType.GT)
|
||
{
|
||
|
||
}
|
||
|
||
public GTGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
|
||
{
|
||
|
||
}
|
||
|
||
public GTGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
public class LTGateItemViewModel : LogicalGateItemViewModel
|
||
{
|
||
public LTGateItemViewModel() : base(LogicalType.GT)
|
||
{
|
||
|
||
}
|
||
|
||
public LTGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
|
||
{
|
||
|
||
}
|
||
|
||
public LTGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
public class GEGateItemViewModel : LogicalGateItemViewModel
|
||
{
|
||
public GEGateItemViewModel() : base(LogicalType.GE)
|
||
{
|
||
|
||
}
|
||
|
||
public GEGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
|
||
{
|
||
|
||
}
|
||
|
||
public GEGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
public class LEGateItemViewModel : LogicalGateItemViewModel
|
||
{
|
||
public LEGateItemViewModel() : base(LogicalType.LE)
|
||
{
|
||
|
||
}
|
||
|
||
public LEGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
|
||
{
|
||
|
||
}
|
||
|
||
public LEGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
public class EQGateItemViewModel : LogicalGateItemViewModel
|
||
{
|
||
public EQGateItemViewModel() : base(LogicalType.LE)
|
||
{
|
||
|
||
}
|
||
|
||
public EQGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
|
||
{
|
||
|
||
}
|
||
|
||
public EQGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
public class NEGateItemViewModel : LogicalGateItemViewModel
|
||
{
|
||
public NEGateItemViewModel() : base(LogicalType.NE)
|
||
{
|
||
|
||
}
|
||
|
||
public NEGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
|
||
{
|
||
|
||
}
|
||
|
||
public NEGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
public class ABSGateItemViewModel : LogicalGateItemViewModel
|
||
{
|
||
public ABSGateItemViewModel() : base(LogicalType.ABS)
|
||
{
|
||
|
||
}
|
||
|
||
public ABSGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
|
||
{
|
||
|
||
}
|
||
|
||
public ABSGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
public class SQRTGateItemViewModel : LogicalGateItemViewModel
|
||
{
|
||
public SQRTGateItemViewModel() : base(LogicalType.SQRT)
|
||
{
|
||
|
||
}
|
||
|
||
public SQRTGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
|
||
{
|
||
|
||
}
|
||
|
||
public SQRTGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
public class LNGateItemViewModel : LogicalGateItemViewModel
|
||
{
|
||
public LNGateItemViewModel() : base(LogicalType.LN)
|
||
{
|
||
|
||
}
|
||
|
||
public LNGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
|
||
{
|
||
|
||
}
|
||
|
||
public LNGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
public class LOGGateItemViewModel : LogicalGateItemViewModel
|
||
{
|
||
public LOGGateItemViewModel() : base(LogicalType.LOG)
|
||
{
|
||
|
||
}
|
||
|
||
public LOGGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
|
||
{
|
||
|
||
}
|
||
|
||
public LOGGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
public class EXPGateItemViewModel : LogicalGateItemViewModel
|
||
{
|
||
public EXPGateItemViewModel() : base(LogicalType.EXP)
|
||
{
|
||
|
||
}
|
||
|
||
public EXPGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
|
||
{
|
||
|
||
}
|
||
|
||
public EXPGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
public class SINGateItemViewModel : LogicalGateItemViewModel
|
||
{
|
||
public SINGateItemViewModel() : base(LogicalType.SIN)
|
||
{
|
||
|
||
}
|
||
|
||
public SINGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
|
||
{
|
||
|
||
}
|
||
|
||
public SINGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
public class COSGateItemViewModel : LogicalGateItemViewModel
|
||
{
|
||
public COSGateItemViewModel() : base(LogicalType.COS)
|
||
{
|
||
|
||
}
|
||
|
||
public COSGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
|
||
{
|
||
|
||
}
|
||
|
||
public COSGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
public class TANGateItemViewModel : LogicalGateItemViewModel
|
||
{
|
||
public TANGateItemViewModel() : base(LogicalType.TAN)
|
||
{
|
||
|
||
}
|
||
|
||
public TANGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
|
||
{
|
||
|
||
}
|
||
|
||
public TANGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
public class ASINGateItemViewModel : LogicalGateItemViewModel
|
||
{
|
||
public ASINGateItemViewModel() : base(LogicalType.ASIN)
|
||
{
|
||
|
||
}
|
||
|
||
public ASINGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
|
||
{
|
||
|
||
}
|
||
|
||
public ASINGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
public class ACOSGateItemViewModel : LogicalGateItemViewModel
|
||
{
|
||
public ACOSGateItemViewModel() : base(LogicalType.ACOS)
|
||
{
|
||
|
||
}
|
||
|
||
public ACOSGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
|
||
{
|
||
|
||
}
|
||
|
||
public ACOSGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
public class ATANGateItemViewModel : LogicalGateItemViewModel
|
||
{
|
||
public ATANGateItemViewModel() : base(LogicalType.ATAN)
|
||
{
|
||
|
||
}
|
||
|
||
public ATANGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
|
||
{
|
||
|
||
}
|
||
|
||
public ATANGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
public class EXPTGateItemViewModel : LogicalGateItemViewModel
|
||
{
|
||
public EXPTGateItemViewModel() : base(LogicalType.EXPT)
|
||
{
|
||
|
||
}
|
||
|
||
public EXPTGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
|
||
{
|
||
|
||
}
|
||
|
||
public EXPTGateItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
public class ConstantDesignerItemViewModel : LogicalGateItemViewModel
|
||
{
|
||
public ConstantDesignerItemViewModel() : base(LogicalType.Constant)
|
||
{
|
||
ItemHeight = 28;
|
||
}
|
||
|
||
public ConstantDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
|
||
{
|
||
|
||
}
|
||
|
||
public ConstantDesignerItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
public class InputItemViewModel : LogicalGateItemViewModel
|
||
{
|
||
public InputItemViewModel() : base(LogicalType.Input)
|
||
{
|
||
ItemHeight = 28;
|
||
}
|
||
|
||
public InputItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
|
||
{
|
||
|
||
}
|
||
|
||
public InputItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
|
||
{
|
||
|
||
}
|
||
|
||
protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase)
|
||
{
|
||
base.LoadDesignerItemViewModel(root, designerbase);
|
||
|
||
if (designerbase is LogicalGateDesignerItemBase designer)
|
||
{
|
||
this.Value = designer.Value;
|
||
LinkPoint = LogicalService.LinkPoint.FirstOrDefault(p => p.Id.ToString() == designer.Icon); //不想新增字段了,就用这个Icon保存自定义测点的Id吧。
|
||
if (LinkPoint != null)
|
||
{
|
||
LinkPoint.Value = designer.Value;
|
||
}
|
||
}
|
||
}
|
||
|
||
private LinkPoint _linkPoint;
|
||
public LinkPoint LinkPoint
|
||
{
|
||
get
|
||
{
|
||
return _linkPoint;
|
||
}
|
||
set
|
||
{
|
||
if (SetProperty(ref _linkPoint, value))
|
||
{
|
||
Icon = _linkPoint?.Id.ToString();//不想新增字段了,就用这个Icon保存自定义测点的Id吧。
|
||
Text = _linkPoint?.Name;
|
||
}
|
||
}
|
||
}
|
||
|
||
protected override void ExecuteEditCommand(object parameter)
|
||
{
|
||
LinkPointDesignerItemData data = new LinkPointDesignerItemData(LinkPoint);
|
||
if (visualiserService.ShowDialog(data) == true)
|
||
{
|
||
this.LinkPoint = data.LinkPoint;
|
||
}
|
||
}
|
||
}
|
||
|
||
public class OutputItemViewModel : LogicalGateItemViewModel
|
||
{
|
||
public OutputItemViewModel() : base(LogicalType.Output)
|
||
{
|
||
ItemHeight = 28;
|
||
}
|
||
|
||
public OutputItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
|
||
{
|
||
|
||
}
|
||
|
||
public OutputItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
|
||
{
|
||
|
||
}
|
||
|
||
protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase)
|
||
{
|
||
base.LoadDesignerItemViewModel(root, designerbase);
|
||
|
||
if (designerbase is LogicalGateDesignerItemBase designer)
|
||
{
|
||
|
||
this.Value = designer.Value;
|
||
LinkPoint = LogicalService.LinkPoint.FirstOrDefault(p => p.Id.ToString() == designer.Icon); //不想新增字段了,就用这个Icon保存自定义测点的Id吧。
|
||
if (LinkPoint != null)
|
||
{
|
||
LinkPoint.Value = designer.Value;
|
||
}
|
||
}
|
||
}
|
||
|
||
private LinkPoint _linkPoint;
|
||
public LinkPoint LinkPoint
|
||
{
|
||
get
|
||
{
|
||
return _linkPoint;
|
||
}
|
||
set
|
||
{
|
||
if (SetProperty(ref _linkPoint, value))
|
||
{
|
||
Icon = _linkPoint?.Id.ToString();//不想新增字段了,就用这个Icon保存自定义测点的Id吧。
|
||
Text = _linkPoint?.Name;
|
||
}
|
||
}
|
||
}
|
||
|
||
protected override void ExecuteEditCommand(object parameter)
|
||
{
|
||
LinkPointDesignerItemData data = new LinkPointDesignerItemData(LinkPoint);
|
||
if (visualiserService.ShowDialog(data) == true)
|
||
{
|
||
this.LinkPoint = data.LinkPoint;
|
||
}
|
||
}
|
||
}
|
||
|
||
public class TimerDesignerItemViewModel : LogicalGateItemViewModel
|
||
{
|
||
private System.Timers.Timer readDataTimer = new System.Timers.Timer();
|
||
public Action Do;
|
||
|
||
public TimerDesignerItemViewModel() : base(LogicalType.Time)
|
||
{
|
||
ItemHeight = 32;
|
||
ItemWidth = 32;
|
||
Value = 1;
|
||
Start();
|
||
BuildMenuOptions();
|
||
}
|
||
|
||
public TimerDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
|
||
{
|
||
BuildMenuOptions();
|
||
}
|
||
|
||
public TimerDesignerItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
|
||
{
|
||
BuildMenuOptions();
|
||
}
|
||
|
||
protected override void Init()
|
||
{
|
||
MenuItemCommand = new SimpleCommand(Command_Enable, ExecuteMenuItemCommand);
|
||
base.Init();
|
||
|
||
readDataTimer.Elapsed += timeCycle;
|
||
readDataTimer.Interval = 1000;
|
||
}
|
||
|
||
protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase)
|
||
{
|
||
base.LoadDesignerItemViewModel(root, designerbase);
|
||
|
||
if (IsEnabled)
|
||
{
|
||
Start();
|
||
}
|
||
else
|
||
{
|
||
Stop();
|
||
}
|
||
}
|
||
|
||
private void Start()
|
||
{
|
||
IsEnabled = true;
|
||
Output[0].ColorViewModel.FillColor.Color = Colors.Green;
|
||
readDataTimer.Start();
|
||
}
|
||
|
||
private void Stop()
|
||
{
|
||
IsEnabled = false;
|
||
Output[0].ColorViewModel.FillColor.Color = Colors.Red;
|
||
readDataTimer.Stop();
|
||
}
|
||
|
||
private void ExecuteMenuItemCommand(object obj)
|
||
{
|
||
if ((obj as CinchMenuItem).IsChecked == true)
|
||
{
|
||
Start();
|
||
}
|
||
else
|
||
{
|
||
Stop();
|
||
}
|
||
}
|
||
|
||
public SimpleCommand MenuItemCommand
|
||
{
|
||
get; private set;
|
||
}
|
||
private void BuildMenuOptions()
|
||
{
|
||
menuOptions = new ObservableCollection<CinchMenuItem>();
|
||
CinchMenuItem menuItem = new CinchMenuItem();
|
||
menuItem.Text = "启动";
|
||
menuItem.IsCheckable = true;
|
||
menuItem.IsChecked = IsEnabled;
|
||
menuItem.Command = MenuItemCommand;
|
||
menuItem.CommandParameter = menuItem;
|
||
menuOptions.Add(menuItem);
|
||
}
|
||
|
||
protected override void ExecuteEditCommand(object parameter)
|
||
{
|
||
ValueDesignerItemData data = new ValueDesignerItemData(Value);
|
||
if (visualiserService.ShowDialog(data) == true)
|
||
{
|
||
this.Value = data.Value;
|
||
readDataTimer.Interval = this.Value * 1000;
|
||
}
|
||
}
|
||
|
||
private void timeCycle(object sender, EventArgs e)
|
||
{
|
||
Output.FirstOrDefault().Value.ConnectorValue += Value;
|
||
if (Do != null)
|
||
{
|
||
Do();
|
||
}
|
||
}
|
||
|
||
public override void Dispose()
|
||
{
|
||
base.Dispose();
|
||
readDataTimer.Stop();
|
||
readDataTimer.Dispose();
|
||
}
|
||
|
||
}
|
||
}
|