mirror of
https://gitee.com/akwkevin/aistudio.-wpf.-diagram
synced 2026-04-05 08:46:34 +08:00
动画demo完成
This commit is contained in:
@@ -137,6 +137,19 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private LineAnimation _lineAnimation = LineAnimation.None;
|
||||
public LineAnimation LineAnimation
|
||||
{
|
||||
get
|
||||
{
|
||||
return _lineAnimation;
|
||||
}
|
||||
set
|
||||
{
|
||||
SetProperty(ref _lineAnimation, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -29,6 +29,10 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
LineAnimation LineAnimation
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
event PropertyChangedEventHandler PropertyChanged;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,24 +15,22 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
public class ConnectionViewModel : SelectableDesignerItemViewModelBase
|
||||
{
|
||||
public ConnectionViewModel(IDiagramViewModel root, FullyCreatedConnectorInfo sourceConnectorInfo, ConnectorInfoBase sinkConnectorInfo, DrawMode drawMode, RouterMode routerMode)
|
||||
{
|
||||
Root = root;
|
||||
PathMode = drawMode.ToString();
|
||||
RouterMode = routerMode.ToString();
|
||||
Init(sourceConnectorInfo, sinkConnectorInfo);
|
||||
}
|
||||
|
||||
public ConnectionViewModel(FullyCreatedConnectorInfo sourceConnectorInfo, ConnectorInfoBase sinkConnectorInfo, DrawMode drawMode = DrawMode.ConnectingLineSmooth, RouterMode routerMode = AIStudio.Wpf.DiagramDesigner.RouterMode.RouterNormal) : this(null, sourceConnectorInfo, sinkConnectorInfo, drawMode, routerMode)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public ConnectionViewModel(IDiagramViewModel root, FullyCreatedConnectorInfo sourceConnectorInfo, ConnectorInfoBase sinkConnectorInfo, DrawMode drawMode = DrawMode.ConnectingLineSmooth, RouterMode routerMode = AIStudio.Wpf.DiagramDesigner.RouterMode.RouterNormal) : base(root)
|
||||
{
|
||||
PathMode = drawMode.ToString();
|
||||
RouterMode = routerMode.ToString();
|
||||
Init(sourceConnectorInfo, sinkConnectorInfo);
|
||||
}
|
||||
|
||||
public ConnectionViewModel(IDiagramViewModel root, FullyCreatedConnectorInfo sourceConnectorInfo, FullyCreatedConnectorInfo sinkConnectorInfo, ConnectionItem designer) : base(root, designer)
|
||||
{
|
||||
PathMode = designer.PathMode;
|
||||
RouterMode = designer.RouterMode;
|
||||
|
||||
Init(sourceConnectorInfo, sinkConnectorInfo);
|
||||
}
|
||||
|
||||
@@ -76,9 +74,9 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
AddLabelCommand = new SimpleCommand(Command_Enable, para => AddLabel());
|
||||
}
|
||||
|
||||
protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase)
|
||||
protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
|
||||
{
|
||||
base.LoadDesignerItemViewModel(root, designerbase);
|
||||
base.LoadDesignerItemViewModel(designerbase);
|
||||
|
||||
if (designerbase is ConnectionItem designer)
|
||||
{
|
||||
@@ -297,23 +295,6 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private LineAnimation _lineAnimation = LineAnimation.None;
|
||||
[Browsable(true)]
|
||||
[CanDo]
|
||||
[StyleName("LineAnimationStyle")]
|
||||
public LineAnimation LineAnimation
|
||||
{
|
||||
get
|
||||
{
|
||||
return _lineAnimation;
|
||||
}
|
||||
set
|
||||
{
|
||||
SetProperty(ref _lineAnimation, value);
|
||||
}
|
||||
}
|
||||
|
||||
public virtual Dictionary<string, string> PropertiesSetting
|
||||
{
|
||||
get
|
||||
@@ -384,6 +365,11 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
}
|
||||
}
|
||||
|
||||
public void RaiseFullConnection()
|
||||
{
|
||||
RaisePropertyChanged(nameof(IsFullConnection));
|
||||
}
|
||||
|
||||
public bool IsPortless => SourceConnectorInfo?.DataItem?.Connectors?.Count() == 0;
|
||||
#endregion
|
||||
|
||||
@@ -506,6 +492,15 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (sender is ColorViewModel)
|
||||
{
|
||||
switch (e.PropertyName)
|
||||
{
|
||||
case nameof(ColorViewModel.LineAnimation):
|
||||
RaisePropertyChanged(nameof(PathGeneratorResult));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void UpdateArea()
|
||||
|
||||
@@ -11,7 +11,12 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
public abstract class ConnectorInfoBase : SelectableViewModelBase
|
||||
{
|
||||
public ConnectorInfoBase(ConnectorOrientation orientation)
|
||||
public ConnectorInfoBase(ConnectorOrientation orientation) : this(null, orientation)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public ConnectorInfoBase(IDiagramViewModel root, ConnectorOrientation orientation) : base(root)
|
||||
{
|
||||
this.Orientation = orientation;
|
||||
}
|
||||
@@ -31,9 +36,9 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
return new ConnectorInfoItemBase(this);
|
||||
}
|
||||
|
||||
protected override void Init()
|
||||
protected override void Init(IDiagramViewModel root)
|
||||
{
|
||||
base.Init();
|
||||
base.Init(root);
|
||||
|
||||
ColorViewModel = new ColorViewModel()
|
||||
{
|
||||
@@ -42,9 +47,9 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
};
|
||||
}
|
||||
|
||||
protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase)
|
||||
protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
|
||||
{
|
||||
base.LoadDesignerItemViewModel(root, designerbase);
|
||||
base.LoadDesignerItemViewModel(designerbase);
|
||||
|
||||
if (designerbase is ConnectorInfoItemBase designer)
|
||||
{
|
||||
|
||||
@@ -8,12 +8,16 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
public class ConnectorLabelModel : ConnectorPointModel, ISelectable
|
||||
{
|
||||
public ConnectorLabelModel(ConnectionViewModel connector, string content, double? distance = null, PointBase? offset = null)
|
||||
public ConnectorLabelModel(ConnectionViewModel connector, string content, double? distance = null, PointBase? offset = null) : this(null, connector, content, distance, offset)
|
||||
{
|
||||
}
|
||||
|
||||
public ConnectorLabelModel(IDiagramViewModel root, ConnectionViewModel connector, string content, double? distance = null, PointBase? offset = null) : base(root)
|
||||
{
|
||||
Parent = connector;
|
||||
Text = content;
|
||||
Distance = distance;
|
||||
Offset = offset ?? new PointBase();
|
||||
Offset = offset ?? new PointBase();
|
||||
}
|
||||
|
||||
public ConnectorLabelModel(IDiagramViewModel root, ConnectionViewModel connector, SelectableItemBase designer) : base(root, designer)
|
||||
@@ -31,9 +35,9 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
return new ConnectorLabelItem(this);
|
||||
}
|
||||
|
||||
protected override void Init()
|
||||
protected override void Init(IDiagramViewModel root)
|
||||
{
|
||||
base.Init();
|
||||
base.Init(root);
|
||||
|
||||
ConnectorWidth = 30;
|
||||
ConnectorHeight = 30;
|
||||
@@ -41,9 +45,9 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
DeleteLabelCommand = new SimpleCommand(Command_Enable, DeleteLabel);
|
||||
}
|
||||
|
||||
protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase)
|
||||
protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
|
||||
{
|
||||
base.LoadDesignerItemViewModel(root, designerbase);
|
||||
base.LoadDesignerItemViewModel(designerbase);
|
||||
|
||||
if (designerbase is ConnectorLabelItem designer)
|
||||
{
|
||||
|
||||
@@ -11,9 +11,24 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
public class ConnectorPointModel : SelectableViewModelBase
|
||||
{
|
||||
public ConnectorPointModel()
|
||||
public ConnectorPointModel() : this(null)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
public ConnectorPointModel(IDiagramViewModel root) : base(root)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public ConnectorPointModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public ConnectorPointModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public ConnectorPointModel(PointBase point) : this()
|
||||
@@ -28,24 +43,14 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
Y = y;
|
||||
}
|
||||
|
||||
public ConnectorPointModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public ConnectorPointModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public override SelectableItemBase GetSerializableObject()
|
||||
{
|
||||
return new ConnectorPointItem(this);
|
||||
}
|
||||
|
||||
protected override void Init()
|
||||
protected override void Init(IDiagramViewModel root)
|
||||
{
|
||||
base.Init();
|
||||
base.Init(root);
|
||||
ColorViewModel = new ColorViewModel()
|
||||
{
|
||||
LineColor = new ColorObject() { Color = Color.FromArgb(0xAA, 0x00, 0x00, 0x80) },
|
||||
@@ -53,9 +58,9 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
};
|
||||
}
|
||||
|
||||
protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase)
|
||||
protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
|
||||
{
|
||||
base.LoadDesignerItemViewModel(root, designerbase);
|
||||
base.LoadDesignerItemViewModel(designerbase);
|
||||
|
||||
if (designerbase is ConnectorPointItem designer)
|
||||
{
|
||||
@@ -78,7 +83,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
}
|
||||
set
|
||||
{
|
||||
if(SetProperty(ref _x, value))
|
||||
if (SetProperty(ref _x, value))
|
||||
{
|
||||
RaisePropertyChanged(nameof(Left));
|
||||
}
|
||||
@@ -138,15 +143,27 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
private double connectorWidth = 8;
|
||||
public double ConnectorWidth
|
||||
{
|
||||
get { return connectorWidth; }
|
||||
set { connectorWidth = value; }
|
||||
get
|
||||
{
|
||||
return connectorWidth;
|
||||
}
|
||||
set
|
||||
{
|
||||
connectorWidth = value;
|
||||
}
|
||||
}
|
||||
|
||||
private double connectorHeight = 8;
|
||||
public double ConnectorHeight
|
||||
{
|
||||
get { return connectorHeight; }
|
||||
set { connectorHeight = value; }
|
||||
get
|
||||
{
|
||||
return connectorHeight;
|
||||
}
|
||||
set
|
||||
{
|
||||
connectorHeight = value;
|
||||
}
|
||||
}
|
||||
|
||||
public static ConnectorPointModel operator -(ConnectorPointModel a, ConnectorPointModel b)
|
||||
|
||||
@@ -6,11 +6,15 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
public class ConnectorVertexModel : ConnectorPointModel
|
||||
{
|
||||
public ConnectorVertexModel(ConnectionViewModel connector, PointBase? position = null)
|
||||
public ConnectorVertexModel(ConnectionViewModel connector, PointBase? position = null) : this(null, connector, position)
|
||||
{
|
||||
}
|
||||
|
||||
public ConnectorVertexModel(IDiagramViewModel root, ConnectionViewModel connector, PointBase? position = null) : base(root)
|
||||
{
|
||||
Parent = connector;
|
||||
X = position?.X ?? 0;
|
||||
Y = position?.Y ?? 0;
|
||||
Y = position?.Y ?? 0;
|
||||
}
|
||||
|
||||
public ConnectorVertexModel(IDiagramViewModel root, ConnectionViewModel connector, SelectableItemBase designer) : base(root, designer)
|
||||
@@ -28,16 +32,16 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
return new ConnectorVertexItem(this);
|
||||
}
|
||||
|
||||
protected override void Init()
|
||||
protected override void Init(IDiagramViewModel root)
|
||||
{
|
||||
base.Init();
|
||||
base.Init(root);
|
||||
|
||||
DeleteVertexCommand = new SimpleCommand(Command_Enable, DeleteVertex);
|
||||
}
|
||||
|
||||
protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase)
|
||||
protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
|
||||
{
|
||||
base.LoadDesignerItemViewModel(root, designerbase);
|
||||
base.LoadDesignerItemViewModel(designerbase);
|
||||
|
||||
if (designerbase is ConnectorVertexItem designer)
|
||||
{
|
||||
|
||||
@@ -11,7 +11,12 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
public class FullyCreatedConnectorInfo : ConnectorInfoBase
|
||||
{
|
||||
public FullyCreatedConnectorInfo(DesignerItemViewModelBase dataItem, ConnectorOrientation orientation, bool isInnerPoint = false, ValueTypePoint valueTypePoint = 0)
|
||||
: base(orientation)
|
||||
: this(null, dataItem, orientation, isInnerPoint, valueTypePoint)
|
||||
{
|
||||
}
|
||||
|
||||
public FullyCreatedConnectorInfo(IDiagramViewModel root, DesignerItemViewModelBase dataItem, ConnectorOrientation orientation, bool isInnerPoint = false, ValueTypePoint valueTypePoint = 0)
|
||||
: base(root, orientation)
|
||||
{
|
||||
this.Parent = dataItem;
|
||||
this.IsInnerPoint = isInnerPoint;
|
||||
@@ -45,9 +50,9 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
return new FullyCreatedConnectorInfoItem(this);
|
||||
}
|
||||
|
||||
protected override void Init()
|
||||
protected override void Init(IDiagramViewModel root)
|
||||
{
|
||||
base.Init();
|
||||
base.Init(root);
|
||||
|
||||
menuOptions = new List<CinchMenuItem>();
|
||||
MenuItemCommand = new SimpleCommand(Command_Enable, ExecuteMenuItemCommand);
|
||||
@@ -55,9 +60,9 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
|
||||
}
|
||||
|
||||
protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase)
|
||||
protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
|
||||
{
|
||||
base.LoadDesignerItemViewModel(root, designerbase);
|
||||
base.LoadDesignerItemViewModel(designerbase);
|
||||
|
||||
if (designerbase is FullyCreatedConnectorInfoItem designer)
|
||||
{
|
||||
|
||||
@@ -9,6 +9,18 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
public class PartCreatedConnectorInfo : ConnectorInfoBase
|
||||
{
|
||||
public PartCreatedConnectorInfo(double X, double Y) : this(null, X, Y)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public PartCreatedConnectorInfo(IDiagramViewModel root, double X, double Y) : base(root, ConnectorOrientation.None)
|
||||
{
|
||||
this.position = new PointBase(X, Y);
|
||||
}
|
||||
|
||||
|
||||
|
||||
private PointBase position;
|
||||
public override PointBase Position
|
||||
{
|
||||
@@ -18,9 +30,6 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
}
|
||||
}
|
||||
|
||||
public PartCreatedConnectorInfo(double X, double Y) : base(ConnectorOrientation.None)
|
||||
{
|
||||
this.position = new PointBase(X, Y);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,7 +13,12 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
public abstract class DesignerItemViewModelBase : SelectableDesignerItemViewModelBase
|
||||
{
|
||||
public DesignerItemViewModelBase() : base()
|
||||
public DesignerItemViewModelBase() : this(null)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public DesignerItemViewModelBase(IDiagramViewModel root) : base(root)
|
||||
{
|
||||
ShapeDefiner = Shapes.Rectangle;
|
||||
}
|
||||
@@ -33,16 +38,16 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
return new DesignerItemBase(this);
|
||||
}
|
||||
|
||||
protected override void Init()
|
||||
protected override void Init(IDiagramViewModel root)
|
||||
{
|
||||
base.Init();
|
||||
base.Init(root);
|
||||
|
||||
InitConnector();
|
||||
}
|
||||
|
||||
protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase)
|
||||
protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
|
||||
{
|
||||
base.LoadDesignerItemViewModel(root, designerbase);
|
||||
base.LoadDesignerItemViewModel(designerbase);
|
||||
|
||||
if (designerbase is DesignerItemBase designer)
|
||||
{
|
||||
|
||||
@@ -9,14 +9,19 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
public class GroupDesignerItemViewModel : DesignerItemViewModelBase
|
||||
{
|
||||
public GroupDesignerItemViewModel() : base()
|
||||
public GroupDesignerItemViewModel() : this(null)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public GroupDesignerItemViewModel(IDiagramViewModel root) : base(root)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
protected override void Init()
|
||||
protected override void Init(IDiagramViewModel root)
|
||||
{
|
||||
base.Init();
|
||||
base.Init(root);
|
||||
|
||||
this.IsHitTestVisible = false;
|
||||
}
|
||||
|
||||
@@ -22,8 +22,12 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
|
||||
public abstract class SelectableDesignerItemViewModelBase : SelectableViewModelBase, ISelectItems, ISelectable, IGroupable
|
||||
{
|
||||
public SelectableDesignerItemViewModelBase() : this(null)
|
||||
{
|
||||
|
||||
public SelectableDesignerItemViewModelBase():base()
|
||||
}
|
||||
|
||||
public SelectableDesignerItemViewModelBase(IDiagramViewModel root) :base(root)
|
||||
{
|
||||
|
||||
}
|
||||
@@ -38,17 +42,17 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
|
||||
}
|
||||
|
||||
protected override void Init()
|
||||
protected override void Init(IDiagramViewModel root)
|
||||
{
|
||||
base.Init();
|
||||
base.Init(root);
|
||||
|
||||
SelectItemCommand = new SimpleCommand(Command_Enable, ExecuteSelectItemCommand);
|
||||
EditCommand = new SimpleCommand(Command_Enable, ExecuteEditCommand);
|
||||
}
|
||||
|
||||
protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase)
|
||||
protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
|
||||
{
|
||||
base.LoadDesignerItemViewModel(root, designerbase);
|
||||
base.LoadDesignerItemViewModel(designerbase);
|
||||
}
|
||||
|
||||
public virtual bool InitData()
|
||||
|
||||
@@ -20,34 +20,38 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
}
|
||||
}
|
||||
|
||||
public SelectableViewModelBase()
|
||||
public SelectableViewModelBase() : this(null)
|
||||
{
|
||||
Init();
|
||||
|
||||
}
|
||||
|
||||
public SelectableViewModelBase(IDiagramViewModel root)
|
||||
{
|
||||
Init(root);
|
||||
(FontViewModel as FontViewModel).PropertyChanged += FontViewModel_PropertyChanged;
|
||||
}
|
||||
|
||||
public SelectableViewModelBase(IDiagramViewModel root, SelectableItemBase designer)
|
||||
{
|
||||
Init();
|
||||
LoadDesignerItemViewModel(root, designer);
|
||||
Init(root);
|
||||
LoadDesignerItemViewModel(designer);
|
||||
(FontViewModel as FontViewModel).PropertyChanged += FontViewModel_PropertyChanged;
|
||||
}
|
||||
|
||||
public SelectableViewModelBase(IDiagramViewModel root, SerializableItem serializableItem, string serializableType)
|
||||
{
|
||||
Init();
|
||||
|
||||
Init(root);
|
||||
SelectableItemBase obj = SerializeHelper.DeserializeObject(serializableItem.SerializableTypeName, serializableItem.SerializableString, serializableType);
|
||||
LoadDesignerItemViewModel(root, obj);
|
||||
LoadDesignerItemViewModel(obj);
|
||||
(FontViewModel as FontViewModel).PropertyChanged += FontViewModel_PropertyChanged;
|
||||
}
|
||||
}
|
||||
|
||||
public virtual SerializableItem ToSerializableItem(string serializableType)
|
||||
{
|
||||
var obj = GetSerializableObject();
|
||||
if (obj != null)
|
||||
{
|
||||
return new SerializableItem() { ModelTypeName = this.GetType().FullName, SerializableTypeName = obj.GetType().FullName, SerializableString = SerializeHelper.SerializeObject(obj, serializableType) };
|
||||
return new SerializableItem() { ModelTypeName = this.GetType().FullName, SerializableTypeName = obj.GetType().FullName, SerializableString = SerializeHelper.SerializeObject(obj, serializableType) };
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -60,8 +64,10 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
return null;
|
||||
}
|
||||
|
||||
protected virtual void Init()
|
||||
protected virtual void Init(IDiagramViewModel root)
|
||||
{
|
||||
Root = root;
|
||||
|
||||
if (Root?.ColorViewModel != null)
|
||||
{
|
||||
this.ColorViewModel = CopyHelper.Mapper(Root.ColorViewModel);
|
||||
@@ -92,10 +98,8 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
LockObjectViewModel = new LockObjectViewModel();
|
||||
}
|
||||
|
||||
protected virtual void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase)
|
||||
protected virtual void LoadDesignerItemViewModel(SelectableItemBase designerbase)
|
||||
{
|
||||
this.Root = root;
|
||||
|
||||
this.Id = designerbase.Id;
|
||||
this.ParentId = designerbase.ParentId;
|
||||
this.IsGroup = designerbase.IsGroup;
|
||||
@@ -211,7 +215,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
return _isHitTestVisible;
|
||||
}
|
||||
set
|
||||
{
|
||||
{
|
||||
if (SetProperty(ref _isHitTestVisible, value))
|
||||
{
|
||||
RaisePropertyChanged("IsReadOnly");
|
||||
|
||||
@@ -7,7 +7,12 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
public class DefaultDesignerItemViewModel : DesignerItemViewModelBase
|
||||
{
|
||||
public DefaultDesignerItemViewModel() : base()
|
||||
public DefaultDesignerItemViewModel() : this(null)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public DefaultDesignerItemViewModel(IDiagramViewModel root) : base(root)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@@ -17,23 +17,24 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
//private IDisposable propertyChangedSubscription;
|
||||
//private IDisposable connectorsChangedSubscription;
|
||||
|
||||
|
||||
public SimpleCommand AddItemCommand { get; private set; }
|
||||
public SimpleCommand ImageSwitchCommand { get; private set; }
|
||||
|
||||
public GifImageItemViewModel() : base()
|
||||
public GifImageItemViewModel() : this(null)
|
||||
{
|
||||
|
||||
}
|
||||
public GifImageItemViewModel(IDiagramViewModel root) : base(root)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public GifImageItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
|
||||
public GifImageItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
public GifImageItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
public override SelectableItemBase GetSerializableObject()
|
||||
@@ -41,26 +42,26 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
return new MediaDesignerItem(this);
|
||||
}
|
||||
|
||||
protected override void Init()
|
||||
{
|
||||
AddItemCommand = new SimpleCommand(Command_Enable, ExecuteAddItemCommand);
|
||||
ImageSwitchCommand = new SimpleCommand(Command_Enable, ExecuteImageSwitchCommand);
|
||||
|
||||
base.Init();
|
||||
protected override void Init(IDiagramViewModel root)
|
||||
{
|
||||
base.Init(root);
|
||||
|
||||
ClearConnectors();
|
||||
//propertyChangedSubscription = WhenPropertyChanged.Where(o => o.ToString() == "Left" || o.ToString() == "Top" || o.ToString() == "ItemWidth" || o.ToString() == "ItemHeight").Subscribe(ChangeImageElement);
|
||||
//connectorsChangedSubscription = WhenConnectorsChanged.Subscribe(OnConnectorsChanged);
|
||||
|
||||
BuildMenuOptions();
|
||||
|
||||
AddItemCommand = new SimpleCommand(Command_Enable, ExecuteAddItemCommand);
|
||||
ImageSwitchCommand = new SimpleCommand(Command_Enable, ExecuteImageSwitchCommand);
|
||||
}
|
||||
|
||||
|
||||
protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase)
|
||||
protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
|
||||
{
|
||||
base.LoadDesignerItemViewModel(root, designerbase);
|
||||
base.LoadDesignerItemViewModel(designerbase);
|
||||
|
||||
if (designerbase is MediaDesignerItem designer)
|
||||
if (designerbase is MediaDesignerItem designer)
|
||||
{
|
||||
this.Icon = designer.Icon;
|
||||
foreach (var connector in designer.Connectors)
|
||||
@@ -74,12 +75,25 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
private bool _shouldInsertAnchor;
|
||||
public bool ShouldInsertAnchor
|
||||
{
|
||||
get { return _shouldInsertAnchor; }
|
||||
get
|
||||
{
|
||||
return _shouldInsertAnchor;
|
||||
}
|
||||
set
|
||||
{
|
||||
SetProperty(ref _shouldInsertAnchor, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public SimpleCommand AddItemCommand
|
||||
{
|
||||
get; private set;
|
||||
}
|
||||
|
||||
public SimpleCommand ImageSwitchCommand
|
||||
{
|
||||
get; private set;
|
||||
}
|
||||
|
||||
private string dir = System.AppDomain.CurrentDomain.BaseDirectory + "Images\\Gifs";
|
||||
private void BuildMenuOptions()
|
||||
|
||||
@@ -15,12 +15,17 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
public class ImageItemViewModel : DesignerItemViewModelBase
|
||||
{
|
||||
|
||||
private static readonly string filter = "图片|*.bmp;*.jpg;*.jpeg;*.gif;*.png";
|
||||
public ImageItemViewModel() : base()
|
||||
|
||||
public ImageItemViewModel() : this(null)
|
||||
{
|
||||
}
|
||||
|
||||
public ImageItemViewModel(IDiagramViewModel root) : base(root)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public ImageItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
|
||||
{
|
||||
|
||||
@@ -36,9 +41,9 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
return new ImageDesignerItem(this);
|
||||
}
|
||||
|
||||
protected override void Init()
|
||||
protected override void Init(IDiagramViewModel root)
|
||||
{
|
||||
base.Init();
|
||||
base.Init(root);
|
||||
|
||||
this.PropertyChanged += ImageItemViewModel_PropertyChanged;
|
||||
|
||||
@@ -110,9 +115,9 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
}
|
||||
|
||||
|
||||
protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase)
|
||||
protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
|
||||
{
|
||||
base.LoadDesignerItemViewModel(root, designerbase);
|
||||
base.LoadDesignerItemViewModel(designerbase);
|
||||
|
||||
if (designerbase is ImageDesignerItem designer)
|
||||
{
|
||||
|
||||
@@ -5,23 +5,20 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
public class LinkPointDesignerItemViewModel : DesignerItemViewModelBase
|
||||
{
|
||||
public Point CurrentLocation
|
||||
public LinkPointDesignerItemViewModel(Point location) : this(null, location)
|
||||
{
|
||||
get
|
||||
{
|
||||
return new Point() { X = Left + ItemWidth / 2, Y = Top + ItemHeight / 2 };
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public LinkPointDesignerItemViewModel(Point location) : base()
|
||||
public LinkPointDesignerItemViewModel(IDiagramViewModel root, Point location) : base(root)
|
||||
{
|
||||
Left = Math.Max(0, location.X - ItemWidth / 2);
|
||||
Top = Math.Max(0, location.Y - ItemHeight / 2);
|
||||
}
|
||||
|
||||
protected override void Init()
|
||||
protected override void Init(IDiagramViewModel root)
|
||||
{
|
||||
base.Init();
|
||||
base.Init(root);
|
||||
|
||||
this.ClearConnectors();
|
||||
this.AddConnector(new FullyCreatedConnectorInfo(this, ConnectorOrientation.None, true));
|
||||
@@ -29,5 +26,13 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
ItemWidth = 5;
|
||||
ItemHeight = 5;
|
||||
}
|
||||
|
||||
public Point CurrentLocation
|
||||
{
|
||||
get
|
||||
{
|
||||
return new Point() { X = Left + ItemWidth / 2, Y = Top + ItemHeight / 2 };
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,13 +9,18 @@ using AIStudio.Wpf.DiagramDesigner.Models;
|
||||
|
||||
namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
public class LogicalGateItemViewModelBase : DesignerItemViewModelBase
|
||||
public abstract class LogicalGateItemViewModelBase : DesignerItemViewModelBase
|
||||
{
|
||||
public SimpleCommand AddInputCommand { get; private set; }
|
||||
public SimpleCommand AddOutputCommand { get; private set; }
|
||||
|
||||
|
||||
public LogicalGateItemViewModelBase(LogicalType logicalType) : base()
|
||||
public LogicalGateItemViewModelBase(LogicalType logicalType) : this(null, logicalType)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public LogicalGateItemViewModelBase(IDiagramViewModel root, LogicalType logicalType) : base(root)
|
||||
{
|
||||
this.LogicalType = logicalType;
|
||||
|
||||
@@ -89,14 +94,14 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
return new LogicalGateDesignerItemBase(this);
|
||||
}
|
||||
|
||||
protected override void Init()
|
||||
protected override void Init(IDiagramViewModel root)
|
||||
{
|
||||
ShowRotate = false;
|
||||
ShowArrow = false;
|
||||
AddInputCommand = new SimpleCommand(Command_Enable, para => ExecuteAddInput(para));
|
||||
AddOutputCommand = new SimpleCommand(Command_Enable, para => ExecuteAddOutput(para));
|
||||
|
||||
base.Init();
|
||||
base.Init(root);
|
||||
}
|
||||
|
||||
private void BuildMenuOptions()
|
||||
@@ -133,9 +138,9 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
}
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
|
||||
@@ -10,11 +10,16 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
protected virtual string Filter { get; set; } = "媒体·|*.*";
|
||||
|
||||
public MediaItemViewModel() : base()
|
||||
public MediaItemViewModel() : this(null)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public MediaItemViewModel(IDiagramViewModel root) : base(root)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public MediaItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
|
||||
{
|
||||
|
||||
@@ -30,17 +35,17 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
return new MediaDesignerItem(this);
|
||||
}
|
||||
|
||||
protected override void Init()
|
||||
protected override void Init(IDiagramViewModel root)
|
||||
{
|
||||
base.Init();
|
||||
base.Init(root);
|
||||
|
||||
BuildMenuOptions();
|
||||
}
|
||||
|
||||
|
||||
protected override void LoadDesignerItemViewModel(IDiagramViewModel parent, SelectableItemBase designerbase)
|
||||
protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
|
||||
{
|
||||
base.LoadDesignerItemViewModel(parent, designerbase);
|
||||
base.LoadDesignerItemViewModel(designerbase);
|
||||
|
||||
if (designerbase is MediaDesignerItem designer)
|
||||
{
|
||||
|
||||
@@ -5,6 +5,28 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
public class PointDesignerItemViewModel : DesignerItemViewModelBase
|
||||
{
|
||||
public PointDesignerItemViewModel(Point location) : this(null, location)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public PointDesignerItemViewModel(IDiagramViewModel root, Point location) : base(root)
|
||||
{
|
||||
Left = Math.Max(0, location.X - ItemWidth / 2);
|
||||
Top = Math.Max(0, location.Y - ItemHeight / 2);
|
||||
}
|
||||
|
||||
protected override void Init(IDiagramViewModel root)
|
||||
{
|
||||
base.Init(root);
|
||||
|
||||
this.ClearConnectors();
|
||||
this.AddConnector(new FullyCreatedConnectorInfo(this, ConnectorOrientation.None, true));
|
||||
|
||||
ItemWidth = 5;
|
||||
ItemHeight = 5;
|
||||
}
|
||||
|
||||
private bool _showConnectors = false;
|
||||
public new bool ShowConnectors
|
||||
{
|
||||
@@ -25,24 +47,5 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
return new Point() { X = Left + ItemWidth / 2, Y = Top + ItemHeight / 2 };
|
||||
}
|
||||
}
|
||||
|
||||
public PointDesignerItemViewModel(Point location) : base()
|
||||
{
|
||||
Left = Math.Max(0, location.X - ItemWidth / 2);
|
||||
Top = Math.Max(0, location.Y - ItemHeight / 2);
|
||||
}
|
||||
|
||||
protected override void Init()
|
||||
{
|
||||
base.Init();
|
||||
|
||||
this.ClearConnectors();
|
||||
this.AddConnector(new FullyCreatedConnectorInfo(this, ConnectorOrientation.None, true));
|
||||
|
||||
ItemWidth = 5;
|
||||
ItemHeight = 5;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,7 +11,33 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
public class ShapeDesignerItemViewModel : DesignerItemViewModelBase
|
||||
{
|
||||
public List<PointDesignerItemViewModel> PointDesignerItemViewModels { get; set; }
|
||||
public ShapeDesignerItemViewModel(DrawMode drawMode, List<Point> points) : this(null, drawMode, points)
|
||||
{
|
||||
}
|
||||
|
||||
public ShapeDesignerItemViewModel(IDiagramViewModel root, DrawMode drawMode, List<Point> points) : base(root)
|
||||
{
|
||||
DrawMode = drawMode;
|
||||
ConnectionPoints = points;
|
||||
|
||||
ItemWidth = ConnectionPoints.Max(p => p.X) - ConnectionPoints.Min(p => p.X);
|
||||
ItemHeight = ConnectionPoints.Max(p => p.Y) - ConnectionPoints.Min(p => p.Y);
|
||||
Left = ConnectionPoints.Min(p => p.X);
|
||||
Top = ConnectionPoints.Min(p => p.Y);
|
||||
|
||||
PointDesignerItemViewModels = new List<PointDesignerItemViewModel>();
|
||||
ConnectionPoints.ForEach((Action<Point>)(p => {
|
||||
var item = new PointDesignerItemViewModel(p);
|
||||
PointDesignerItemViewModels.Add((PointDesignerItemViewModel)item);
|
||||
}));
|
||||
|
||||
PointDesignerItemViewModels.ForEach(p => p.PropertyChanged += PointDesignerItemViewModel_PropertyChanged);
|
||||
}
|
||||
|
||||
public List<PointDesignerItemViewModel> PointDesignerItemViewModels
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
private List<Point> _connectionPoints;
|
||||
public List<Point> ConnectionPoints
|
||||
@@ -25,7 +51,10 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
SetProperty(ref _connectionPoints, value);
|
||||
}
|
||||
}
|
||||
public DrawMode DrawMode { get; set; }
|
||||
public DrawMode DrawMode
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
private bool _showConnectors = false;
|
||||
public new bool ShowConnectors
|
||||
@@ -46,26 +75,9 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
}
|
||||
}
|
||||
|
||||
public SimpleCommand MenuItemCommand { get; private set; }
|
||||
|
||||
public ShapeDesignerItemViewModel(DrawMode drawMode, List<Point> points) : base()
|
||||
public SimpleCommand MenuItemCommand
|
||||
{
|
||||
DrawMode = drawMode;
|
||||
ConnectionPoints = points;
|
||||
|
||||
ItemWidth = ConnectionPoints.Max(p => p.X) - ConnectionPoints.Min(p => p.X);
|
||||
ItemHeight = ConnectionPoints.Max(p => p.Y) - ConnectionPoints.Min(p => p.Y);
|
||||
Left = ConnectionPoints.Min(p => p.X);
|
||||
Top = ConnectionPoints.Min(p => p.Y);
|
||||
|
||||
PointDesignerItemViewModels = new List<PointDesignerItemViewModel>();
|
||||
ConnectionPoints.ForEach((Action<Point>)(p =>
|
||||
{
|
||||
var item = new PointDesignerItemViewModel(p);
|
||||
PointDesignerItemViewModels.Add((PointDesignerItemViewModel)item);
|
||||
}));
|
||||
|
||||
PointDesignerItemViewModels.ForEach(p => p.PropertyChanged += PointDesignerItemViewModel_PropertyChanged);
|
||||
get; private set;
|
||||
}
|
||||
|
||||
private void PointDesignerItemViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
|
||||
@@ -85,10 +97,10 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
Top = ConnectionPoints.Min(p => p.Y);
|
||||
}
|
||||
|
||||
protected override void Init()
|
||||
protected override void Init(IDiagramViewModel root)
|
||||
{
|
||||
MenuItemCommand = new SimpleCommand(Command_Enable, ExecuteMenuItemCommand);
|
||||
base.Init();
|
||||
base.Init(root);
|
||||
|
||||
this.ClearConnectors();
|
||||
|
||||
|
||||
@@ -7,7 +7,12 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
public class TextDesignerItemViewModel : DesignerItemViewModelBase
|
||||
{
|
||||
public TextDesignerItemViewModel()
|
||||
public TextDesignerItemViewModel() : this(null)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public TextDesignerItemViewModel(IDiagramViewModel root) : base(root)
|
||||
{
|
||||
|
||||
}
|
||||
@@ -27,9 +32,9 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
return new TextDesignerItem(this);
|
||||
}
|
||||
|
||||
protected override void Init()
|
||||
protected override void Init(IDiagramViewModel root)
|
||||
{
|
||||
base.Init();
|
||||
base.Init(root);
|
||||
|
||||
this.ItemWidth = 150;
|
||||
this.ClearConnectors();
|
||||
|
||||
@@ -10,16 +10,20 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
protected override string Filter { get; set; } = "视频|*.wmv;*.asf;*.asx;*.rm;*.rmvb;*.mp4;*.3gp;*.mov;*.m4v;*.avi;*.dat;*.mkv;*.flv;*.vob";
|
||||
|
||||
public VideoItemViewModel() : base()
|
||||
public VideoItemViewModel() : this(null)
|
||||
{
|
||||
}
|
||||
|
||||
public VideoItemViewModel(IDiagramViewModel root) : base(root)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public VideoItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
public VideoItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
|
||||
{
|
||||
|
||||
|
||||
Reference in New Issue
Block a user