动画demo完成

This commit is contained in:
艾竹
2023-01-27 14:54:03 +08:00
parent 64ea56f01e
commit 72e3efb052
81 changed files with 1211 additions and 503 deletions

View File

@@ -8,10 +8,15 @@ using AIStudio.Wpf.DiagramDesigner.Services;
namespace AIStudio.Wpf.Logical.ViewModels
{
public class LogicalGateItemViewModel : LogicalGateItemViewModelBase
public abstract class LogicalGateItemViewModel : LogicalGateItemViewModelBase
{
protected IUIVisualizerService visualiserService;
public LogicalGateItemViewModel(LogicalType logicalType) : base(logicalType)
public LogicalGateItemViewModel(LogicalType logicalType) : this(null, logicalType)
{
ColorViewModel.FillColor.Color = Colors.Orange;
}
public LogicalGateItemViewModel(IDiagramViewModel root, LogicalType logicalType) : base(root, logicalType)
{
ColorViewModel.FillColor.Color = Colors.Orange;
}
@@ -31,16 +36,16 @@ namespace AIStudio.Wpf.Logical.ViewModels
return new LogicalGateDesignerItemBase(this);
}
protected override void Init()
protected override void Init(IDiagramViewModel root)
{
base.Init();
base.Init(root);
visualiserService = ApplicationServicesProvider.Instance.Provider.VisualizerService;
}
protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase)
protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
{
base.LoadDesignerItemViewModel(root, designerbase);
base.LoadDesignerItemViewModel(designerbase);
if (designerbase is LogicalGateDesignerItemBase designer)
{
@@ -72,7 +77,11 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class AddGateItemViewModel : LogicalGateItemViewModel
{
public AddGateItemViewModel() : base(LogicalType.ADD)
public AddGateItemViewModel() : this(null)
{
}
public AddGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.ADD)
{
}
@@ -88,7 +97,11 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class SubtractGateItemViewModel : LogicalGateItemViewModel
{
public SubtractGateItemViewModel() : base(LogicalType.SUB)
public SubtractGateItemViewModel() : this(null)
{
}
public SubtractGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.SUB)
{
}
@@ -104,7 +117,11 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class MultiplyGateItemViewModel : LogicalGateItemViewModel
{
public MultiplyGateItemViewModel() : base(LogicalType.MUL)
public MultiplyGateItemViewModel() : this(null)
{
}
public MultiplyGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.MUL)
{
}
@@ -121,7 +138,11 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class DivideGateItemViewModel : LogicalGateItemViewModel
{
public DivideGateItemViewModel() : base(LogicalType.DIV)
public DivideGateItemViewModel() : this(null)
{
}
public DivideGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.DIV)
{
}
@@ -137,11 +158,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class AverageGateItemViewModel : LogicalGateItemViewModel
{
public AverageGateItemViewModel() : base(LogicalType.AVE)
public AverageGateItemViewModel() : this(null)
{
}
public AverageGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.AVE)
{
}
public AverageGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{
@@ -155,11 +180,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class MODGateItemViewModel : LogicalGateItemViewModel
{
public MODGateItemViewModel() : base(LogicalType.MOD)
public MODGateItemViewModel() : this(null)
{
}
public MODGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.MOD)
{
}
public MODGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{
@@ -173,11 +202,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class ANDGateItemViewModel : LogicalGateItemViewModel
{
public ANDGateItemViewModel() : base(LogicalType.AND)
public ANDGateItemViewModel() : this(null)
{
}
public ANDGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.AND)
{
}
public ANDGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{
@@ -191,11 +224,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class ORGateItemViewModel : LogicalGateItemViewModel
{
public ORGateItemViewModel() : base(LogicalType.OR)
public ORGateItemViewModel() : this(null)
{
}
public ORGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.OR)
{
}
public ORGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{
@@ -209,11 +246,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class XORGateItemViewModel : LogicalGateItemViewModel
{
public XORGateItemViewModel() : base(LogicalType.XOR)
public XORGateItemViewModel() : this(null)
{
}
public XORGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.XOR)
{
}
public XORGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{
@@ -227,11 +268,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class NOTGateItemViewModel : LogicalGateItemViewModel
{
public NOTGateItemViewModel() : base(LogicalType.NOT)
public NOTGateItemViewModel() : this(null)
{
}
public NOTGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.NOT)
{
}
public NOTGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{
@@ -245,11 +290,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class SHLGateItemViewModel : LogicalGateItemViewModel
{
public SHLGateItemViewModel() : base(LogicalType.SHL)
public SHLGateItemViewModel() : this(null)
{
}
public SHLGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.SHL)
{
}
public SHLGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{
@@ -263,11 +312,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class SHRGateItemViewModel : LogicalGateItemViewModel
{
public SHRGateItemViewModel() : base(LogicalType.SHR)
public SHRGateItemViewModel() : this(null)
{
}
public SHRGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.SHR)
{
}
public SHRGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{
@@ -281,11 +334,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class ROLGateItemViewModel : LogicalGateItemViewModel
{
public ROLGateItemViewModel() : base(LogicalType.ROL)
public ROLGateItemViewModel() : this(null)
{
}
public ROLGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.ROL)
{
}
public ROLGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{
@@ -299,11 +356,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class RORGateItemViewModel : LogicalGateItemViewModel
{
public RORGateItemViewModel() : base(LogicalType.ROR)
public RORGateItemViewModel() : this(null)
{
}
public RORGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.ROR)
{
}
public RORGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{
@@ -317,11 +378,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class SELGateItemViewModel : LogicalGateItemViewModel
{
public SELGateItemViewModel() : base(LogicalType.SEL)
public SELGateItemViewModel() : this(null)
{
}
public SELGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.SEL)
{
}
public SELGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{
@@ -335,11 +400,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class MAXGateItemViewModel : LogicalGateItemViewModel
{
public MAXGateItemViewModel() : base(LogicalType.MAX)
public MAXGateItemViewModel() : this(null)
{
}
public MAXGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.MAX)
{
}
public MAXGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{
@@ -353,11 +422,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class MINGateItemViewModel : LogicalGateItemViewModel
{
public MINGateItemViewModel() : base(LogicalType.MIN)
public MINGateItemViewModel() : this(null)
{
}
public MINGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.MIN)
{
}
public MINGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{
@@ -371,11 +444,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class LIMITGateItemViewModel : LogicalGateItemViewModel
{
public LIMITGateItemViewModel() : base(LogicalType.LIMIT)
public LIMITGateItemViewModel() : this(null)
{
}
public LIMITGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.LIMIT)
{
}
public LIMITGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{
@@ -389,11 +466,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class GTGateItemViewModel : LogicalGateItemViewModel
{
public GTGateItemViewModel() : base(LogicalType.GT)
public GTGateItemViewModel() : this(null)
{
}
public GTGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.GT)
{
}
public GTGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{
@@ -407,11 +488,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class LTGateItemViewModel : LogicalGateItemViewModel
{
public LTGateItemViewModel() : base(LogicalType.GT)
public LTGateItemViewModel() : this(null)
{
}
public LTGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.LT)
{
}
public LTGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{
@@ -425,11 +510,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class GEGateItemViewModel : LogicalGateItemViewModel
{
public GEGateItemViewModel() : base(LogicalType.GE)
public GEGateItemViewModel() : this(null)
{
}
public GEGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.GE)
{
}
public GEGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{
@@ -443,11 +532,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class LEGateItemViewModel : LogicalGateItemViewModel
{
public LEGateItemViewModel() : base(LogicalType.LE)
public LEGateItemViewModel() : this(null)
{
}
public LEGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.LE)
{
}
public LEGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{
@@ -461,11 +554,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class EQGateItemViewModel : LogicalGateItemViewModel
{
public EQGateItemViewModel() : base(LogicalType.LE)
public EQGateItemViewModel() : this(null)
{
}
public EQGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.EQ)
{
}
public EQGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{
@@ -479,11 +576,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class NEGateItemViewModel : LogicalGateItemViewModel
{
public NEGateItemViewModel() : base(LogicalType.NE)
public NEGateItemViewModel() : this(null)
{
}
public NEGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.NE)
{
}
public NEGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{
@@ -497,11 +598,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class ABSGateItemViewModel : LogicalGateItemViewModel
{
public ABSGateItemViewModel() : base(LogicalType.ABS)
public ABSGateItemViewModel() : this(null)
{
}
public ABSGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.ABS)
{
}
public ABSGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{
@@ -515,11 +620,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class SQRTGateItemViewModel : LogicalGateItemViewModel
{
public SQRTGateItemViewModel() : base(LogicalType.SQRT)
public SQRTGateItemViewModel() : this(null)
{
}
public SQRTGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.SQRT)
{
}
public SQRTGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{
@@ -533,11 +642,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class LNGateItemViewModel : LogicalGateItemViewModel
{
public LNGateItemViewModel() : base(LogicalType.LN)
public LNGateItemViewModel() : this(null)
{
}
public LNGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.LN)
{
}
public LNGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{
@@ -551,11 +664,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class LOGGateItemViewModel : LogicalGateItemViewModel
{
public LOGGateItemViewModel() : base(LogicalType.LOG)
public LOGGateItemViewModel() : this(null)
{
}
public LOGGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.LOG)
{
}
public LOGGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{
@@ -569,11 +686,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class EXPGateItemViewModel : LogicalGateItemViewModel
{
public EXPGateItemViewModel() : base(LogicalType.EXP)
public EXPGateItemViewModel() : this(null)
{
}
public EXPGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.EXP)
{
}
public EXPGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{
@@ -587,11 +708,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class SINGateItemViewModel : LogicalGateItemViewModel
{
public SINGateItemViewModel() : base(LogicalType.SIN)
public SINGateItemViewModel() : this(null)
{
}
public SINGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.SIN)
{
}
public SINGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{
@@ -605,11 +730,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class COSGateItemViewModel : LogicalGateItemViewModel
{
public COSGateItemViewModel() : base(LogicalType.COS)
public COSGateItemViewModel() : this(null)
{
}
public COSGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.COS)
{
}
public COSGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{
@@ -623,11 +752,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class TANGateItemViewModel : LogicalGateItemViewModel
{
public TANGateItemViewModel() : base(LogicalType.TAN)
public TANGateItemViewModel() : this(null)
{
}
public TANGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.TAN)
{
}
public TANGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{
@@ -641,11 +774,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class ASINGateItemViewModel : LogicalGateItemViewModel
{
public ASINGateItemViewModel() : base(LogicalType.ASIN)
public ASINGateItemViewModel() : this(null)
{
}
public ASINGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.ASIN)
{
}
public ASINGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{
@@ -659,11 +796,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class ACOSGateItemViewModel : LogicalGateItemViewModel
{
public ACOSGateItemViewModel() : base(LogicalType.ACOS)
public ACOSGateItemViewModel() : this(null)
{
}
public ACOSGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.ACOS)
{
}
public ACOSGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{
@@ -677,11 +818,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class ATANGateItemViewModel : LogicalGateItemViewModel
{
public ATANGateItemViewModel() : base(LogicalType.ATAN)
public ATANGateItemViewModel() : this(null)
{
}
public ATANGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.ATAN)
{
}
public ATANGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{
@@ -695,11 +840,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class EXPTGateItemViewModel : LogicalGateItemViewModel
{
public EXPTGateItemViewModel() : base(LogicalType.EXPT)
public EXPTGateItemViewModel() : this(null)
{
}
public EXPTGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.EXPT)
{
}
public EXPTGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{
@@ -713,7 +862,12 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class ConstantDesignerItemViewModel : LogicalGateItemViewModel
{
public ConstantDesignerItemViewModel() : base(LogicalType.Constant)
public ConstantDesignerItemViewModel() : this(null)
{
}
public ConstantDesignerItemViewModel(IDiagramViewModel root) : base(root, LogicalType.Constant)
{
ItemHeight = 28;
}
@@ -731,7 +885,11 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class InputItemViewModel : LogicalGateItemViewModel
{
public InputItemViewModel() : base(LogicalType.Input)
public InputItemViewModel() : this(null)
{
}
public InputItemViewModel(IDiagramViewModel root) : base(root, LogicalType.Input)
{
ItemHeight = 28;
}
@@ -746,9 +904,9 @@ namespace AIStudio.Wpf.Logical.ViewModels
}
protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase)
protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
{
base.LoadDesignerItemViewModel(root, designerbase);
base.LoadDesignerItemViewModel(designerbase);
if (designerbase is LogicalGateDesignerItemBase designer)
{
@@ -790,7 +948,12 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class OutputItemViewModel : LogicalGateItemViewModel
{
public OutputItemViewModel() : base(LogicalType.Output)
public OutputItemViewModel() : this(null)
{
}
public OutputItemViewModel(IDiagramViewModel root) : base(root, LogicalType.Output)
{
ItemHeight = 28;
}
@@ -805,9 +968,9 @@ namespace AIStudio.Wpf.Logical.ViewModels
}
protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase)
protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
{
base.LoadDesignerItemViewModel(root, designerbase);
base.LoadDesignerItemViewModel(designerbase);
if (designerbase is LogicalGateDesignerItemBase designer)
{
@@ -853,7 +1016,12 @@ namespace AIStudio.Wpf.Logical.ViewModels
private System.Timers.Timer readDataTimer = new System.Timers.Timer();
public Action Do;
public TimerDesignerItemViewModel() : base(LogicalType.Time)
public TimerDesignerItemViewModel() : this(null)
{
}
public TimerDesignerItemViewModel(IDiagramViewModel root) : base(root, LogicalType.Time)
{
ItemHeight = 32;
ItemWidth = 32;
@@ -872,18 +1040,18 @@ namespace AIStudio.Wpf.Logical.ViewModels
BuildMenuOptions();
}
protected override void Init()
{
MenuItemCommand = new SimpleCommand(Command_Enable, ExecuteMenuItemCommand);
base.Init();
protected override void Init(IDiagramViewModel root)
{
base.Init(root);
MenuItemCommand = new SimpleCommand(Command_Enable, ExecuteMenuItemCommand);
readDataTimer.Elapsed += timeCycle;
readDataTimer.Interval = 1000;
}
protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase)
protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
{
base.LoadDesignerItemViewModel(root, designerbase);
base.LoadDesignerItemViewModel(designerbase);
if (IsEnabled)
{