diff --git a/AIStudio.Wpf.DiagramApp/ViewModels/DiagramsViewModel.cs b/AIStudio.Wpf.DiagramApp/ViewModels/DiagramsViewModel.cs index 9dda7f9..be03e7d 100644 --- a/AIStudio.Wpf.DiagramApp/ViewModels/DiagramsViewModel.cs +++ b/AIStudio.Wpf.DiagramApp/ViewModels/DiagramsViewModel.cs @@ -594,7 +594,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels { ImageItemViewModel itemBase = new ImageItemViewModel(); DiagramViewModel.DirectAddItemCommand.Execute(itemBase); - if (itemBase.Parent != null) + if (itemBase.Root != null) { _service.DrawModeViewModel.CursorMode = CursorMode.Move; } @@ -631,7 +631,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels { VideoItemViewModel itemBase = new VideoItemViewModel(); DiagramViewModel.DirectAddItemCommand.Execute(itemBase); - if (itemBase.Parent != null) + if (itemBase.Root != null) { _service.DrawModeViewModel.CursorMode = CursorMode.Move; } @@ -641,7 +641,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels { OutLineTextDesignerItemViewModel itemBase = new OutLineTextDesignerItemViewModel(); DiagramViewModel.DirectAddItemCommand.Execute(itemBase); - if (itemBase.Parent != null) + if (itemBase.Root != null) { _service.DrawModeViewModel.CursorMode = CursorMode.Move; } @@ -651,7 +651,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels { BarcodeDesignerItemViewModel itemBase = new BarcodeDesignerItemViewModel() { Format = (BarcodeFormat)Enum.Parse(typeof(BarcodeFormat), para.ToString()), Text="AIStudio.Wpf.DiagramApp" }; DiagramViewModel.DirectAddItemCommand.Execute(itemBase); - if (itemBase.Parent != null) + if (itemBase.Root != null) { _service.DrawModeViewModel.CursorMode = CursorMode.Move; } diff --git a/AIStudio.Wpf.DiagramDesigner/Controls/DesignerCanvas.cs b/AIStudio.Wpf.DiagramDesigner/Controls/DesignerCanvas.cs index 6d16d6e..c414339 100644 --- a/AIStudio.Wpf.DiagramDesigner/Controls/DesignerCanvas.cs +++ b/AIStudio.Wpf.DiagramDesigner/Controls/DesignerCanvas.cs @@ -373,10 +373,10 @@ namespace AIStudio.Wpf.DiagramDesigner Connector sinkConnector = connectorsHit.Last(); FullyCreatedConnectorInfo sinkDataItem = sinkConnector.DataContext as FullyCreatedConnectorInfo; - int indexOfLastTempConnection = sinkDataItem.DataItem.Parent.Items.Count - 1; - sinkDataItem.DataItem.Parent.DirectRemoveItemCommand.Execute( - sinkDataItem.DataItem.Parent.Items[indexOfLastTempConnection]); - sinkDataItem.DataItem.Parent.AddItemCommand.Execute(new ConnectorViewModel(_viewModel, sourceDataItem, sinkDataItem, DrawMode, RouterMode)); + int indexOfLastTempConnection = sinkDataItem.DataItem.Root.Items.Count - 1; + sinkDataItem.DataItem.Root.DirectRemoveItemCommand.Execute( + sinkDataItem.DataItem.Root.Items[indexOfLastTempConnection]); + sinkDataItem.DataItem.Root.AddItemCommand.Execute(new ConnectorViewModel(_viewModel, sourceDataItem, sinkDataItem, DrawMode, RouterMode)); } else if (_service.DrawModeViewModel.GetDrawMode() == DrawMode.DirectLine && connectorsHit.Count() == 1) { @@ -396,9 +396,9 @@ namespace AIStudio.Wpf.DiagramDesigner else { //Need to remove last item as we did not finish drawing the path - int indexOfLastTempConnection = sourceDataItem.DataItem.Parent.Items.Count - 1; - sourceDataItem.DataItem.Parent.DirectRemoveItemCommand.Execute( - sourceDataItem.DataItem.Parent.Items[indexOfLastTempConnection]); + int indexOfLastTempConnection = sourceDataItem.DataItem.Root.Items.Count - 1; + sourceDataItem.DataItem.Root.DirectRemoveItemCommand.Execute( + sourceDataItem.DataItem.Root.Items[indexOfLastTempConnection]); } diff --git a/AIStudio.Wpf.DiagramDesigner/Controls/DragThumb.cs b/AIStudio.Wpf.DiagramDesigner/Controls/DragThumb.cs index 811fba2..dded4a4 100644 --- a/AIStudio.Wpf.DiagramDesigner/Controls/DragThumb.cs +++ b/AIStudio.Wpf.DiagramDesigner/Controls/DragThumb.cs @@ -27,7 +27,7 @@ namespace AIStudio.Wpf.DiagramDesigner.Controls if (designerItem != null && designerItem.IsSelected) { // we only move DesignerItems - designerItems = designerItem.Parent.SelectedItems.ToList(); + designerItems = designerItem.Root.SelectedItems.ToList(); if (designerItem is ConnectorViewModel connector) { designerItems.Add(connector.SourceConnectorInfo.DataItem); diff --git a/AIStudio.Wpf.DiagramDesigner/Controls/PointDragThumb.cs b/AIStudio.Wpf.DiagramDesigner/Controls/PointDragThumb.cs index 17c0ccf..258e735 100644 --- a/AIStudio.Wpf.DiagramDesigner/Controls/PointDragThumb.cs +++ b/AIStudio.Wpf.DiagramDesigner/Controls/PointDragThumb.cs @@ -31,7 +31,7 @@ namespace AIStudio.Wpf.DiagramDesigner.Controls void DragThumb_DragDelta(object sender, DragDeltaEventArgs e) { - if (this.DataContext is ConnectorPoint point) + if (this.DataContext is ConnectorPointModel point) { point.X += e.HorizontalChange; point.Y += e.VerticalChange; diff --git a/AIStudio.Wpf.DiagramDesigner/Controls/ResizeThumb.cs b/AIStudio.Wpf.DiagramDesigner/Controls/ResizeThumb.cs index 9a63810..749673d 100644 --- a/AIStudio.Wpf.DiagramDesigner/Controls/ResizeThumb.cs +++ b/AIStudio.Wpf.DiagramDesigner/Controls/ResizeThumb.cs @@ -23,10 +23,10 @@ namespace AIStudio.Wpf.DiagramDesigner.Controls private void ResizeThumb_DragStarted(object sender, DragStartedEventArgs e) { DesignerItemViewModelBase designerItem = this.DataContext as DesignerItemViewModelBase; - diagarmViewModel = designerItem.Parent; + diagarmViewModel = designerItem.Root; if (designerItem != null && designerItem.IsSelected) { - designerItems = designerItem.Parent.SelectedItems.ToList(); + designerItems = designerItem.Root.SelectedItems.ToList(); foreach (DesignerItemViewModelBase item in designerItems.OfType()) { item.BeginDo = true; diff --git a/AIStudio.Wpf.DiagramDesigner/Controls/RotateThumb.cs b/AIStudio.Wpf.DiagramDesigner/Controls/RotateThumb.cs index 31e25ac..b0f7f08 100644 --- a/AIStudio.Wpf.DiagramDesigner/Controls/RotateThumb.cs +++ b/AIStudio.Wpf.DiagramDesigner/Controls/RotateThumb.cs @@ -32,7 +32,7 @@ namespace AIStudio.Wpf.DiagramDesigner.Controls if (this.designerItem != null) { - designerItems = designerItem.Parent.SelectedItems.ToList(); + designerItems = designerItem.Root.SelectedItems.ToList(); foreach (DesignerItemViewModelBase item in designerItems.OfType()) { diff --git a/AIStudio.Wpf.DiagramDesigner/Converters/ConnectionDataConverter.cs b/AIStudio.Wpf.DiagramDesigner/Converters/ConnectionDataConverter.cs index dfe4d64..c81a0b7 100644 --- a/AIStudio.Wpf.DiagramDesigner/Converters/ConnectionDataConverter.cs +++ b/AIStudio.Wpf.DiagramDesigner/Converters/ConnectionDataConverter.cs @@ -29,7 +29,7 @@ namespace AIStudio.Wpf.DiagramDesigner PathGeometry pathGeometry = new PathGeometry(); if (values[0] != null) { - List points = (List)values[0]; + List points = (List)values[0]; PathFigure figure = new PathFigure(); figure.StartPoint = (PointBase)points[0]; diff --git a/AIStudio.Wpf.DiagramDesigner/Models/Serializables/ConnectionItem.cs b/AIStudio.Wpf.DiagramDesigner/Models/Serializables/ConnectionItem.cs index c53fe32..4c77af4 100644 --- a/AIStudio.Wpf.DiagramDesigner/Models/Serializables/ConnectionItem.cs +++ b/AIStudio.Wpf.DiagramDesigner/Models/Serializables/ConnectionItem.cs @@ -11,9 +11,12 @@ using System.Xml.Serialization; namespace AIStudio.Wpf.DiagramDesigner { + /// + /// 连接线 + /// [Serializable] [XmlInclude(typeof(ConnectionItem))] - public class ConnectionItem : SelectableDesignerItemBase + public class ConnectionItem : SelectableItemBase { public ConnectionItem() { @@ -39,7 +42,8 @@ namespace AIStudio.Wpf.DiagramDesigner this.SinkInnerPoint = viewmodel.SinkConnectorInfoFully.IsInnerPoint; this.RouterMode = viewmodel.RouterMode; this.PathMode = viewmodel.PathMode; - this.Vertices = viewmodel.Vertices.Select(p => (Point)p.MiddlePosition).ToList(); + this.Vertices = viewmodel.Vertices.Select(p => new ConnectorVertexItem(p)).ToList(); + this.Labels = viewmodel.Labels.Select(p => new ConnectorLabelItem(p)).ToList(); } @@ -97,28 +101,14 @@ namespace AIStudio.Wpf.DiagramDesigner get; set; } - [XmlIgnore] - public List Vertices + [XmlArray] + public List Vertices { get; set; - } - - [JsonIgnore] - [XmlAttribute("Vertices")] - public string XmlVertices - { - get - { - return SerializeHelper.SerializePointList(Vertices); - } - set - { - Vertices = SerializeHelper.DeserializePointList(value); - } } [XmlArray] - public List Connectors + public List Labels { get; set; } diff --git a/AIStudio.Wpf.DiagramDesigner/Models/Serializables/ConnectorItem.cs b/AIStudio.Wpf.DiagramDesigner/Models/Serializables/ConnectorItem.cs index c03ba17..c9dbf5a 100644 --- a/AIStudio.Wpf.DiagramDesigner/Models/Serializables/ConnectorItem.cs +++ b/AIStudio.Wpf.DiagramDesigner/Models/Serializables/ConnectorItem.cs @@ -4,20 +4,57 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using System.Xml.Serialization; namespace AIStudio.Wpf.DiagramDesigner { - public class ConnectorItem + /// + /// 连接点 + /// + [Serializable] + [XmlInclude(typeof(ConnectorItem))] + public class ConnectorItem : SelectableItemBase { - public Guid ParentId { get; set; } - public Guid Id { get; set; } + public ConnectorItem() + { + + } + + public ConnectorItem(FullyCreatedConnectorInfo viewmodel) : base(viewmodel) + { + XRatio = viewmodel.XRatio; + YRatio = viewmodel.YRatio; + ConnectorWidth = viewmodel.ConnectorWidth; + ConnectorHeight = viewmodel.ConnectorHeight; + Orientation = viewmodel.Orientation; + IsInnerPoint = viewmodel.IsInnerPoint; + ValueTypePoint = viewmodel.ValueTypePoint; + ConnectorValue = viewmodel.ConnectorValue; + } + + + [XmlAttribute] public double XRatio { get; set; } + + [XmlAttribute] public double YRatio { get; set; } + + [XmlAttribute] public double ConnectorWidth { get; set; } + + [XmlAttribute] public double ConnectorHeight { get; set; } + + [XmlAttribute] public ConnectorOrientation Orientation { get; set; } + + [XmlAttribute] public bool IsInnerPoint { get; set; } + + [XmlAttribute] public ValueTypePoint ValueTypePoint { get; set; } + + [XmlAttribute] public double ConnectorValue { get; set; } } } diff --git a/AIStudio.Wpf.DiagramDesigner/Models/Serializables/ConnectorLabelItem.cs b/AIStudio.Wpf.DiagramDesigner/Models/Serializables/ConnectorLabelItem.cs index 38eb229..b3bfe8e 100644 --- a/AIStudio.Wpf.DiagramDesigner/Models/Serializables/ConnectorLabelItem.cs +++ b/AIStudio.Wpf.DiagramDesigner/Models/Serializables/ConnectorLabelItem.cs @@ -1,11 +1,54 @@ using System; using System.Collections.Generic; using System.Text; +using System.Windows; +using System.Xml.Serialization; +using Newtonsoft.Json; namespace AIStudio.Wpf.DiagramDesigner { - public class ConnectorLabelItem + /// + /// 连接点文字 + /// + [Serializable] + [XmlInclude(typeof(ConnectorLabelItem))] + public class ConnectorLabelItem : ConnectorPointItem { + public ConnectorLabelItem() + { + } + + public ConnectorLabelItem(ConnectorLabelModel viewmodel) : base(viewmodel) + { + Distance = viewmodel.Distance; + Offset = viewmodel.Offset; + } + + [XmlAttribute] + public double? Distance + { + get; set; + } + + [XmlIgnore] + public Point Offset + { + get; set; + } + + [JsonIgnore] + [XmlAttribute("Offset")] + public string XmlOffset + { + get + { + return SerializeHelper.SerializePoint(Offset); + } + set + { + Offset = SerializeHelper.DeserializePoint(value); + } + } } } diff --git a/AIStudio.Wpf.DiagramDesigner/Models/Serializables/ConnectorPointItem.cs b/AIStudio.Wpf.DiagramDesigner/Models/Serializables/ConnectorPointItem.cs new file mode 100644 index 0000000..f95e373 --- /dev/null +++ b/AIStudio.Wpf.DiagramDesigner/Models/Serializables/ConnectorPointItem.cs @@ -0,0 +1,53 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Xml.Serialization; + +namespace AIStudio.Wpf.DiagramDesigner +{ + + /// + /// 连接中间点 + /// + [Serializable] + [XmlInclude(typeof(ConnectorPointItem))] + public class ConnectorPointItem : SelectableItemBase + { + public ConnectorPointItem() + { + + } + + public ConnectorPointItem(ConnectorPointModel viewmodel) : base(viewmodel) + { + X = viewmodel.X; + Y = viewmodel.Y; + ConnectorWidth = viewmodel.ConnectorWidth; + ConnectorHeight = viewmodel.ConnectorHeight; + } + + [XmlAttribute] + public double X + { + get;set; + } + + [XmlAttribute] + public double Y + { + get; set; + } + + [XmlAttribute] + public double ConnectorWidth + { + get; set; + } + + [XmlAttribute] + public double ConnectorHeight + { + get; set; + } + } +} diff --git a/AIStudio.Wpf.DiagramDesigner/Models/Serializables/ConnectorVertexItem.cs b/AIStudio.Wpf.DiagramDesigner/Models/Serializables/ConnectorVertexItem.cs index 4b0f01f..3c35ef9 100644 --- a/AIStudio.Wpf.DiagramDesigner/Models/Serializables/ConnectorVertexItem.cs +++ b/AIStudio.Wpf.DiagramDesigner/Models/Serializables/ConnectorVertexItem.cs @@ -1,10 +1,25 @@ using System; using System.Collections.Generic; using System.Text; +using System.Xml.Serialization; namespace AIStudio.Wpf.DiagramDesigner { - class ConnectorVertexItem + /// + /// 连接线。中间点 + /// + [Serializable] + [XmlInclude(typeof(ConnectorVertexItem))] + public class ConnectorVertexItem : ConnectorPointItem { + public ConnectorVertexItem() + { + + } + + public ConnectorVertexItem(ConnectorVertexModel viewmodel) : base(viewmodel) + { + + } } } diff --git a/AIStudio.Wpf.DiagramDesigner/Models/Serializables/DesignerItemBase.cs b/AIStudio.Wpf.DiagramDesigner/Models/Serializables/DesignerItemBase.cs index 8f95d3f..a3dd684 100644 --- a/AIStudio.Wpf.DiagramDesigner/Models/Serializables/DesignerItemBase.cs +++ b/AIStudio.Wpf.DiagramDesigner/Models/Serializables/DesignerItemBase.cs @@ -11,7 +11,7 @@ namespace AIStudio.Wpf.DiagramDesigner { [Serializable] [XmlInclude(typeof(DesignerItemBase))] - public class DesignerItemBase : SelectableDesignerItemBase + public class DesignerItemBase : SelectableItemBase { public DesignerItemBase() { diff --git a/AIStudio.Wpf.DiagramDesigner/Models/Serializables/ImageDesignerItem.cs b/AIStudio.Wpf.DiagramDesigner/Models/Serializables/ImageDesignerItem.cs index ec50cf6..29b9139 100644 --- a/AIStudio.Wpf.DiagramDesigner/Models/Serializables/ImageDesignerItem.cs +++ b/AIStudio.Wpf.DiagramDesigner/Models/Serializables/ImageDesignerItem.cs @@ -15,14 +15,7 @@ namespace AIStudio.Wpf.DiagramDesigner Connectors = new List(); foreach (var fullyCreatedConnectorInfo in item.Connectors) { - ConnectorItem connector = new ConnectorItem() - { - XRatio = fullyCreatedConnectorInfo.XRatio, - YRatio = fullyCreatedConnectorInfo.YRatio, - ConnectorWidth = fullyCreatedConnectorInfo.ConnectorWidth, - ConnectorHeight = fullyCreatedConnectorInfo.ConnectorHeight, - Orientation = fullyCreatedConnectorInfo.Orientation - }; + ConnectorItem connector = new ConnectorItem(fullyCreatedConnectorInfo); Connectors.Add(connector); } } diff --git a/AIStudio.Wpf.DiagramDesigner/Models/Serializables/LogicalGateDesignerItemBase.cs b/AIStudio.Wpf.DiagramDesigner/Models/Serializables/LogicalGateDesignerItemBase.cs index ff190e2..1e34440 100644 --- a/AIStudio.Wpf.DiagramDesigner/Models/Serializables/LogicalGateDesignerItemBase.cs +++ b/AIStudio.Wpf.DiagramDesigner/Models/Serializables/LogicalGateDesignerItemBase.cs @@ -18,17 +18,7 @@ namespace AIStudio.Wpf.DiagramDesigner this.Connectors = new List(); foreach (var fullyCreatedConnectorInfo in item.Connectors) { - ConnectorItem connector = new ConnectorItem() - { - XRatio = fullyCreatedConnectorInfo.XRatio, - YRatio = fullyCreatedConnectorInfo.YRatio, - ConnectorWidth = fullyCreatedConnectorInfo.ConnectorWidth, - ConnectorHeight = fullyCreatedConnectorInfo.ConnectorHeight, - Orientation = fullyCreatedConnectorInfo.Orientation, - IsInnerPoint = fullyCreatedConnectorInfo.IsInnerPoint, - ValueTypePoint = fullyCreatedConnectorInfo.ValueTypePoint, - ConnectorValue = fullyCreatedConnectorInfo.ConnectorValue - }; + ConnectorItem connector = new ConnectorItem(fullyCreatedConnectorInfo); this.Connectors.Add(connector); } this.OrderNumber = item.OrderNumber; diff --git a/AIStudio.Wpf.DiagramDesigner/Models/Serializables/MediaDesignerItem.cs b/AIStudio.Wpf.DiagramDesigner/Models/Serializables/MediaDesignerItem.cs index 3fafb15..dfeb261 100644 --- a/AIStudio.Wpf.DiagramDesigner/Models/Serializables/MediaDesignerItem.cs +++ b/AIStudio.Wpf.DiagramDesigner/Models/Serializables/MediaDesignerItem.cs @@ -15,14 +15,7 @@ namespace AIStudio.Wpf.DiagramDesigner Connectors = new List(); foreach (var fullyCreatedConnectorInfo in item.Connectors) { - ConnectorItem connector = new ConnectorItem() - { - XRatio = fullyCreatedConnectorInfo.XRatio, - YRatio = fullyCreatedConnectorInfo.YRatio, - ConnectorWidth = fullyCreatedConnectorInfo.ConnectorWidth, - ConnectorHeight = fullyCreatedConnectorInfo.ConnectorHeight, - Orientation = fullyCreatedConnectorInfo.Orientation - }; + ConnectorItem connector = new ConnectorItem(fullyCreatedConnectorInfo); Connectors.Add(connector); } } @@ -32,14 +25,7 @@ namespace AIStudio.Wpf.DiagramDesigner Connectors = new List(); foreach (var fullyCreatedConnectorInfo in item.Connectors) { - ConnectorItem connector = new ConnectorItem() - { - XRatio = fullyCreatedConnectorInfo.XRatio, - YRatio = fullyCreatedConnectorInfo.YRatio, - ConnectorWidth = fullyCreatedConnectorInfo.ConnectorWidth, - ConnectorHeight = fullyCreatedConnectorInfo.ConnectorHeight, - Orientation = fullyCreatedConnectorInfo.Orientation - }; + ConnectorItem connector = new ConnectorItem(fullyCreatedConnectorInfo); Connectors.Add(connector); } } diff --git a/AIStudio.Wpf.DiagramDesigner/Models/Serializables/SelectableDesignerItemBase.cs b/AIStudio.Wpf.DiagramDesigner/Models/Serializables/SelectableItemBase.cs similarity index 95% rename from AIStudio.Wpf.DiagramDesigner/Models/Serializables/SelectableDesignerItemBase.cs rename to AIStudio.Wpf.DiagramDesigner/Models/Serializables/SelectableItemBase.cs index af71cbb..d9ed4f4 100644 --- a/AIStudio.Wpf.DiagramDesigner/Models/Serializables/SelectableDesignerItemBase.cs +++ b/AIStudio.Wpf.DiagramDesigner/Models/Serializables/SelectableItemBase.cs @@ -13,27 +13,15 @@ using System.Xml.Serialization; namespace AIStudio.Wpf.DiagramDesigner { - public abstract class SelectableDesignerItemBase + public abstract class SelectableItemBase { - public SelectableDesignerItemBase() + public SelectableItemBase() { ColorItem = new ColorItem() { LineColor = new ColorObjectItem(), FillColor = new ColorObjectItem() }; FontItem = new FontItem(); } - //public SelectableDesignerItemBase(Guid id, int zIndex, bool isGroup, Guid parentId, IColorViewModel colorViewModel, IFontViewModel fontViewModel) - //{ - // this.Id = id; - // this.ZIndex = zIndex; - // this.IsGroup = isGroup; - // this.ParentId = parentId; - - - // ColorItem = CopyHelper.Mapper(colorViewModel); - // FontItem = CopyHelper.Mapper(fontViewModel); - //} - - public SelectableDesignerItemBase(SelectableDesignerItemViewModelBase viewmodel) + public SelectableItemBase(SelectableViewModelBase viewmodel) { this.Id = viewmodel.Id; this.ZIndex = viewmodel.ZIndex; @@ -45,6 +33,12 @@ namespace AIStudio.Wpf.DiagramDesigner FontItem = CopyHelper.Mapper(viewmodel.FontViewModel); } + [XmlAttribute] + public Guid ParentId + { + get; set; + } + [XmlAttribute] public Guid Id { @@ -63,12 +57,6 @@ namespace AIStudio.Wpf.DiagramDesigner get; set; } - [XmlAttribute] - public Guid ParentId - { - get; set; - } - [XmlAttribute] public string Text { diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectorInfoBase.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectorInfoBase.cs index f421ae4..39929ac 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectorInfoBase.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectorInfoBase.cs @@ -8,8 +8,25 @@ using AIStudio.Wpf.DiagramDesigner.Geometrys; namespace AIStudio.Wpf.DiagramDesigner { - public abstract class ConnectorInfoBase : BindableBase + public abstract class ConnectorInfoBase : SelectableViewModelBase { + public ConnectorInfoBase(ConnectorOrientation orientation) + { + this.Orientation = orientation; + } + + protected override void Init() + { + base.Init(); + + ColorViewModel = new ColorViewModel() + { + LineColor = new ColorObject() { Color = Color.FromArgb(0xAA, 0x00, 0x00, 0x80) }, + FillColor = new ColorObject() { Color = Colors.Lavender }, + }; + } + + #region 属性 public virtual PointBase Position { get; @@ -21,17 +38,7 @@ namespace AIStudio.Wpf.DiagramDesigner { return new PointBase(Position.X + ConnectorWidth / 2, Position.Y + ConnectorHeight / 2); } - } - - public ConnectorInfoBase(ConnectorOrientation orientation) - { - this.Orientation = orientation; - ColorViewModel = new ColorViewModel() - { - LineColor = new ColorObject() { Color = Color.FromArgb(0xAA, 0x00, 0x00, 0x80) }, - FillColor = new ColorObject() { Color = Colors.Lavender }, - }; - } + } private ConnectorOrientation _orientation; public ConnectorOrientation Orientation @@ -72,19 +79,6 @@ namespace AIStudio.Wpf.DiagramDesigner } } - private IColorViewModel _colorViewModel; - public IColorViewModel ColorViewModel - { - get - { - return _colorViewModel; - } - set - { - SetProperty(ref _colorViewModel, value); - } - } - public double _connectorValue; public double ConnectorValue { @@ -97,5 +91,6 @@ namespace AIStudio.Wpf.DiagramDesigner SetProperty(ref _connectorValue, value); } } + #endregion } } diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectorLabelModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectorLabelModel.cs index ccbcb21..d447592 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectorLabelModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectorLabelModel.cs @@ -4,43 +4,29 @@ using SvgPathProperties; namespace AIStudio.Wpf.DiagramDesigner { - public class ConnectorLabelModel : ConnectorPoint, ISelectable + public class ConnectorLabelModel : ConnectorPointModel, ISelectable { - public ConnectorLabelModel(ConnectorViewModel parent, string content, double? distance = null, PointBase? offset = null) + public ConnectorLabelModel(ConnectorViewModel connector, string content, double? distance = null, PointBase? offset = null) { - Parent = parent; + Parent = connector; Text = content; Distance = distance; - Offset = offset ?? new PointBase(); - FontViewModel = Parent.FontViewModel; - ColorViewModel = Parent.ColorViewModel; + Offset = offset ?? new PointBase(); + } + + protected override void Init() + { + base.Init(); DeleteLabelCommand = new SimpleCommand(DeleteLabel); } - public ConnectorViewModel Parent - { - get; - } - - public bool IsHitTestVisible + #region 属性 + public ConnectorViewModel Connector { get { - return Parent.IsHitTestVisible; - } - } - - private string _text; - public string Text - { - get - { - return _text; - } - set - { - SetProperty(ref _text, value); + return Parent as ConnectorViewModel; } } @@ -59,8 +45,8 @@ namespace AIStudio.Wpf.DiagramDesigner get; set; } - private bool _isSelected; - public bool IsSelected + //private bool _isSelected; + public override bool IsSelected { get { @@ -73,7 +59,7 @@ namespace AIStudio.Wpf.DiagramDesigner //如果没有文字,失去焦点自动清除 if (_isSelected == false && string.IsNullOrEmpty(Text)) { - Parent.Labels.Remove(this); + Connector.Labels.Remove(this); } } @@ -84,6 +70,7 @@ namespace AIStudio.Wpf.DiagramDesigner { get; set; } + #endregion private bool updating = false; @@ -120,7 +107,7 @@ namespace AIStudio.Wpf.DiagramDesigner } else { - length = totalLength * (Parent.Labels.IndexOf(this) + 1) / (Parent.Labels.Count + 1); + length = totalLength * (Connector.Labels.IndexOf(this) + 1) / (Connector.Labels.Count + 1); } @@ -153,9 +140,9 @@ namespace AIStudio.Wpf.DiagramDesigner Offset += new VectorBase(0, newvalue - oldvalue); } - public void AddToSelection(bool selected) + public override void AddToSelection(bool selected) { - foreach (var item in Parent.Labels.ToList()) + foreach (var item in Connector.Labels.ToList()) item.IsSelected = false; if (selected == true) @@ -168,7 +155,7 @@ namespace AIStudio.Wpf.DiagramDesigner { if (parameter is ConnectorLabelModel label) { - Parent.Labels.Remove(label); + Connector.Labels.Remove(label); } } diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectorPoint.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectorPointModel.cs similarity index 67% rename from AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectorPoint.cs rename to AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectorPointModel.cs index 4e8cf92..9c87e42 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectorPoint.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectorPointModel.cs @@ -8,29 +8,35 @@ using AIStudio.Wpf.DiagramDesigner.Geometrys; namespace AIStudio.Wpf.DiagramDesigner { - public class ConnectorPoint : BindableBase + public class ConnectorPointModel : SelectableViewModelBase { - public ConnectorPoint() + public ConnectorPointModel() { - ColorViewModel = new ColorViewModel() - { - LineColor = new ColorObject() { Color = Color.FromArgb(0xAA, 0x00, 0x00, 0x80) }, - FillColor = new ColorObject() { Color = Colors.Lavender }, - }; + } - public ConnectorPoint(PointBase point) : this() + public ConnectorPointModel(PointBase point) : this() { X = point.X; Y = point.Y; } - public ConnectorPoint(double x, double y) : this() + public ConnectorPointModel(double x, double y) : this() { X = x; Y = y; } + protected override void Init() + { + base.Init(); + ColorViewModel = new ColorViewModel() + { + LineColor = new ColorObject() { Color = Color.FromArgb(0xAA, 0x00, 0x00, 0x80) }, + FillColor = new ColorObject() { Color = Colors.Lavender }, + }; + } + /// /// 中间X /// @@ -114,54 +120,28 @@ namespace AIStudio.Wpf.DiagramDesigner set { connectorHeight = value; } } - private IColorViewModel _colorViewModel; - public IColorViewModel ColorViewModel + public static ConnectorPointModel operator -(ConnectorPointModel a, ConnectorPointModel b) { - get - { - return _colorViewModel; - } - set - { - SetProperty(ref _colorViewModel, value); - } + return new ConnectorPointModel(a.X - b.X, a.Y - b.Y); + } + public static ConnectorPointModel operator +(ConnectorPointModel a, ConnectorPointModel b) + { + return new ConnectorPointModel(a.X + b.X, a.Y + b.Y); } - private IFontViewModel _fontViewModel; - public IFontViewModel FontViewModel + public static implicit operator ConnectorPointModel(PointBase point) { - get - { - return _fontViewModel; - } - set - { - SetProperty(ref _fontViewModel, value); - } + return new ConnectorPointModel(point); } - public static ConnectorPoint operator -(ConnectorPoint a, ConnectorPoint b) - { - return new ConnectorPoint(a.X - b.X, a.Y - b.Y); - } - public static ConnectorPoint operator +(ConnectorPoint a, ConnectorPoint b) - { - return new ConnectorPoint(a.X + b.X, a.Y + b.Y); - } - - public static implicit operator ConnectorPoint(PointBase point) - { - return new ConnectorPoint(point); - } - - public static implicit operator PointBase(ConnectorPoint pointInfoBase) + public static implicit operator PointBase(ConnectorPointModel pointInfoBase) { return new PointBase(pointInfoBase.X, pointInfoBase.Y); } - public static List ToList(List lst) + public static List ToList(List lst) { - return lst.Select(p => (ConnectorPoint)p).ToList(); + return lst.Select(p => (ConnectorPointModel)p).ToList(); } public override string ToString() => $"ConnectorPoint(x={X}, y={Y})"; diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectorVertexModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectorVertexModel.cs index ce06521..77f15bf 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectorVertexModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectorVertexModel.cs @@ -2,31 +2,45 @@ namespace AIStudio.Wpf.DiagramDesigner { - public class ConnectorVertexModel : ConnectorPoint + public class ConnectorVertexModel : ConnectorPointModel { - public ConnectorVertexModel(ConnectorViewModel parent, PointBase? position = null) + public ConnectorVertexModel(ConnectorViewModel connector, PointBase? position = null) { - Parent = parent; + Parent = connector; X = position?.X ?? 0; - Y = position?.Y ?? 0; + Y = position?.Y ?? 0; + } + + protected override void Init() + { + base.Init(); DeleteVertexCommand = new SimpleCommand(DeleteVertex); } - public ConnectorViewModel Parent + protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase) { - get; + base.LoadDesignerItemViewModel(root, designerbase); + + } + + public ConnectorViewModel Connector + { + get + { + return Parent as ConnectorViewModel; + } } public override PointBase Position { get { - return new PointBase(Parent.Area.Left + Left, Parent.Area.Top + Top); + return new PointBase(Connector.Area.Left + Left, Connector.Area.Top + Top); } } - public override PointBase MiddlePosition => new PointBase(Parent.Area.Left + Left + ConnectorWidth / 2, Parent.Area.Top + Top + ConnectorHeight / 2); + public override PointBase MiddlePosition => new PointBase(Connector.Area.Left + Left + ConnectorWidth / 2, Connector.Area.Top + Top + ConnectorHeight / 2); public SimpleCommand DeleteVertexCommand { @@ -37,7 +51,7 @@ namespace AIStudio.Wpf.DiagramDesigner { if (parameter is ConnectorVertexModel vertice) { - Parent.Vertices.Remove(vertice); + Connector.Vertices.Remove(vertice); } } diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectorViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectorViewModel.cs index bf30229..44afa20 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectorViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectorViewModel.cs @@ -15,15 +15,15 @@ namespace AIStudio.Wpf.DiagramDesigner { public class ConnectorViewModel : SelectableDesignerItemViewModelBase { - public ConnectorViewModel(IDiagramViewModel parent, FullyCreatedConnectorInfo sourceConnectorInfo, ConnectorInfoBase sinkConnectorInfo, DrawMode drawMode, RouterMode routerMode) + public ConnectorViewModel(IDiagramViewModel root, FullyCreatedConnectorInfo sourceConnectorInfo, ConnectorInfoBase sinkConnectorInfo, DrawMode drawMode, RouterMode routerMode) { - Parent = parent; + Root = root; PathMode = drawMode.ToString(); RouterMode = routerMode.ToString(); Init(sourceConnectorInfo, sinkConnectorInfo); } - public ConnectorViewModel(IDiagramViewModel parent, FullyCreatedConnectorInfo sourceConnectorInfo, FullyCreatedConnectorInfo sinkConnectorInfo, ConnectionItem designer) : base(parent, designer) + public ConnectorViewModel(IDiagramViewModel root, FullyCreatedConnectorInfo sourceConnectorInfo, FullyCreatedConnectorInfo sinkConnectorInfo, ConnectionItem designer) : base(root, designer) { PathMode = designer.PathMode; RouterMode = designer.RouterMode; @@ -39,11 +39,11 @@ namespace AIStudio.Wpf.DiagramDesigner protected virtual void Init(FullyCreatedConnectorInfo sourceConnectorInfo, ConnectorInfoBase sinkConnectorInfo) { - this.Parent = sourceConnectorInfo.DataItem.Parent; + this.Root = sourceConnectorInfo.DataItem.Root; - if (Parent != null && Parent.ColorViewModel != null) + if (Root != null && Root.ColorViewModel != null) { - this.ColorViewModel = CopyHelper.Mapper(Parent.ColorViewModel); + this.ColorViewModel = CopyHelper.Mapper(Root.ColorViewModel); } if (sinkConnectorInfo is FullyCreatedConnectorInfo sink && sink.DataItem.ShowArrow == false) { @@ -65,14 +65,14 @@ namespace AIStudio.Wpf.DiagramDesigner AddLabelCommand = new SimpleCommand(AddLabel); } - protected void LoadDesignerItemViewModel(SelectableDesignerItemBase designerbase) + protected void LoadDesignerItemViewModel(SelectableItemBase designerbase) { ConnectionItem designer = designerbase as ConnectionItem; Vertices = new ObservableCollection(designer.Vertices.Select(p => new ConnectorVertexModel(this, new PointBase(p.X, p.Y)))); } - public override SelectableDesignerItemBase ToXmlObject() + public override SelectableItemBase ToXmlObject() { if (IsFullConnection) { @@ -92,6 +92,51 @@ namespace AIStudio.Wpf.DiagramDesigner } #region 属性 + private string _text; + [Browsable(true)] + [CanDo] + public override string Text + { + get + { + var text = _text; + if (Labels?.Count > 0) + { + text = Labels[0].Text; + } + + if (FontViewModel.FontCase == FontCase.Upper) + { + return text?.ToUpper(); + } + else if (FontViewModel.FontCase == FontCase.Lower) + { + return text?.ToLower(); + } + else + { + return text; + } + } + set + { + if (SetProperty(ref _text, value)) + { + if (!string.IsNullOrEmpty(_text)) + { + if (Labels?.Count > 0) + { + Labels[0].Text = _text; + } + else + { + AddLabel(_text); + } + } + } + } + } + private PointBase _sourceA; public PointBase SourceA { @@ -438,8 +483,8 @@ namespace AIStudio.Wpf.DiagramDesigner { switch (e.PropertyName) { - case nameof(ConnectorPoint.X): - case nameof(ConnectorPoint.Y): + case nameof(ConnectorPointModel.X): + case nameof(ConnectorPointModel.Y): UpdatePathGeneratorResult(); break; @@ -449,7 +494,7 @@ namespace AIStudio.Wpf.DiagramDesigner { switch (e.PropertyName) { - case nameof(ConnectorPoint.X): + case nameof(ConnectorPointModel.X): { if (e is ValuePropertyChangedEventArgs valuePropertyChangedEventArgs) { @@ -457,7 +502,7 @@ namespace AIStudio.Wpf.DiagramDesigner } break; } - case nameof(ConnectorPoint.Y): + case nameof(ConnectorPointModel.Y): { if (e is ValuePropertyChangedEventArgs valuePropertyChangedEventArgs) { @@ -479,13 +524,13 @@ namespace AIStudio.Wpf.DiagramDesigner if (SourceConnectorInfo == null || SinkConnectorInfo == null) return; - var route = Router.Get(Parent, this); + var route = Router.Get(Root, this); (var source, var target) = FindConnectionPoints(route); if (source == null || target == null) return; - PathGeneratorResult = PathGenerator.Get(Parent, this, route, source.Value, target.Value); + PathGeneratorResult = PathGenerator.Get(Root, this, route, source.Value, target.Value); //修正旋转 switch (SourceConnectorInfo.Orientation) @@ -560,9 +605,9 @@ namespace AIStudio.Wpf.DiagramDesigner private void DeleteConnection(object args) { - if (this.Parent is IDiagramViewModel) + if (this.Root is IDiagramViewModel) { - var diagramVM = this.Parent as IDiagramViewModel; + var diagramVM = this.Root as IDiagramViewModel; diagramVM.RemoveItemCommand.Execute(this); } } diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DesignerItemViewModelBase.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DesignerItemViewModelBase.cs index f658ad5..5c7ad23 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DesignerItemViewModelBase.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DesignerItemViewModelBase.cs @@ -18,12 +18,12 @@ namespace AIStudio.Wpf.DiagramDesigner ShapeDefiner = Shapes.Rectangle; } - public DesignerItemViewModelBase(IDiagramViewModel parent, DesignerItemBase designer) : base(parent, designer) + public DesignerItemViewModelBase(IDiagramViewModel root, DesignerItemBase designer) : base(root, designer) { ShapeDefiner = Shapes.Rectangle; } - public DesignerItemViewModelBase(IDiagramViewModel parent, string json) : base(parent, json) + public DesignerItemViewModelBase(IDiagramViewModel root, string json) : base(root, json) { ShapeDefiner = Shapes.Rectangle; } @@ -35,9 +35,9 @@ namespace AIStudio.Wpf.DiagramDesigner InitConnector(); } - protected override void LoadDesignerItemViewModel(IDiagramViewModel parent, SelectableDesignerItemBase designerbase) + protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase) { - base.LoadDesignerItemViewModel(parent, designerbase); + base.LoadDesignerItemViewModel(root, designerbase); DesignerItemBase designer = designerbase as DesignerItemBase; @@ -51,7 +51,7 @@ namespace AIStudio.Wpf.DiagramDesigner this.Icon = designer.Icon; } - public override SelectableDesignerItemBase ToXmlObject() + public override SelectableItemBase ToXmlObject() { return new DesignerItemBase(this); } @@ -382,41 +382,41 @@ namespace AIStudio.Wpf.DiagramDesigner { if (!(this is TextDesignerItemViewModel)) { - if (Parent.CellHorizontalAlignment == CellHorizontalAlignment.Center) + if (Root.CellHorizontalAlignment == CellHorizontalAlignment.Center) { - if (Parent.GridCellSize.Width > this.ItemWidth) + if (Root.GridCellSize.Width > this.ItemWidth) { - this.Left = (int)(this.Left / Parent.GridCellSize.Width) * Parent.GridCellSize.Width + Parent.GridMargin + (Parent.GridCellSize.Width - this.ItemWidth) / 2; + this.Left = (int)(this.Left / Root.GridCellSize.Width) * Root.GridCellSize.Width + Root.GridMargin + (Root.GridCellSize.Width - this.ItemWidth) / 2; } } - else if (Parent.CellHorizontalAlignment == CellHorizontalAlignment.Left) + else if (Root.CellHorizontalAlignment == CellHorizontalAlignment.Left) { - this.Left = (int)(this.Left / Parent.GridCellSize.Width) * Parent.GridCellSize.Width + Parent.GridMargin; + this.Left = (int)(this.Left / Root.GridCellSize.Width) * Root.GridCellSize.Width + Root.GridMargin; } - else if (Parent.CellHorizontalAlignment == CellHorizontalAlignment.Right) + else if (Root.CellHorizontalAlignment == CellHorizontalAlignment.Right) { - if (Parent.GridCellSize.Width > this.ItemWidth) + if (Root.GridCellSize.Width > this.ItemWidth) { - this.Left = (int)(this.Left / Parent.GridCellSize.Width) * Parent.GridCellSize.Width + Parent.GridMargin + (Parent.GridCellSize.Width - this.ItemWidth); + this.Left = (int)(this.Left / Root.GridCellSize.Width) * Root.GridCellSize.Width + Root.GridMargin + (Root.GridCellSize.Width - this.ItemWidth); } } - if (Parent.CellVerticalAlignment == CellVerticalAlignment.Center) + if (Root.CellVerticalAlignment == CellVerticalAlignment.Center) { - if (Parent.GridCellSize.Height > this.ItemHeight) + if (Root.GridCellSize.Height > this.ItemHeight) { - this.Top = (int)(this.Top / Parent.GridCellSize.Height) * Parent.GridCellSize.Height + Parent.GridMargin + (Parent.GridCellSize.Height - this.ItemHeight) / 2; + this.Top = (int)(this.Top / Root.GridCellSize.Height) * Root.GridCellSize.Height + Root.GridMargin + (Root.GridCellSize.Height - this.ItemHeight) / 2; } } - else if (Parent.CellVerticalAlignment == CellVerticalAlignment.Top) + else if (Root.CellVerticalAlignment == CellVerticalAlignment.Top) { - this.Top = (int)(this.Top / Parent.GridCellSize.Height) * Parent.GridCellSize.Height + Parent.GridMargin; + this.Top = (int)(this.Top / Root.GridCellSize.Height) * Root.GridCellSize.Height + Root.GridMargin; } - else if (Parent.CellVerticalAlignment == CellVerticalAlignment.Bottom) + else if (Root.CellVerticalAlignment == CellVerticalAlignment.Bottom) { - if (Parent.GridCellSize.Height > this.ItemHeight) + if (Root.GridCellSize.Height > this.ItemHeight) { - this.Top = (int)(this.Top / Parent.GridCellSize.Height) * Parent.GridCellSize.Height + Parent.GridMargin + (Parent.GridCellSize.Height - this.ItemHeight); + this.Top = (int)(this.Top / Root.GridCellSize.Height) * Root.GridCellSize.Height + Root.GridMargin + (Root.GridCellSize.Height - this.ItemHeight); } } } diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramViewModel.cs index f4a7e4d..b42474f 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramViewModel.cs @@ -743,7 +743,7 @@ namespace AIStudio.Wpf.DiagramDesigner private void Add(SelectableDesignerItemViewModelBase item) { - item.Parent = this; + item.Root = this; item.ZIndex = Items.Count; if (item.Id == Guid.Empty) { diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/SelectableDesignerItemViewModelBase.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/SelectableDesignerItemViewModelBase.cs index 8befe8b..f6a013c 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/SelectableDesignerItemViewModelBase.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/SelectableDesignerItemViewModelBase.cs @@ -28,12 +28,12 @@ namespace AIStudio.Wpf.DiagramDesigner } - public SelectableDesignerItemViewModelBase(IDiagramViewModel parent, SelectableDesignerItemBase designer):base(parent, designer) + public SelectableDesignerItemViewModelBase(IDiagramViewModel root, SelectableItemBase designer):base(root, designer) { } - public SelectableDesignerItemViewModelBase(IDiagramViewModel parent, string json) : base(parent, json) + public SelectableDesignerItemViewModelBase(IDiagramViewModel root, string json) : base(root, json) { } @@ -134,7 +134,7 @@ namespace AIStudio.Wpf.DiagramDesigner { if (newselect) { - foreach (var designerItemViewModelBase in Parent.SelectedItems.ToList()) + foreach (var designerItemViewModelBase in Root.SelectedItems.ToList()) { designerItemViewModelBase._isSelected = false; } @@ -145,13 +145,13 @@ namespace AIStudio.Wpf.DiagramDesigner public override void AddToSelection(bool selected) { - foreach (SelectableDesignerItemViewModelBase item in Parent.SelectedItems.ToList()) + foreach (SelectableDesignerItemViewModelBase item in Root.SelectedItems.ToList()) item.IsSelected = false; - Parent.SelectedItems.Clear(); + Root.SelectedItems.Clear(); if (selected == true) { - Parent.SelectionService.AddToSelection(this); + Root.SelectionService.AddToSelection(this); } } diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/SelectableViewModelBase.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/SelectableViewModelBase.cs index 7bace74..2266e66 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/SelectableViewModelBase.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/SelectableViewModelBase.cs @@ -26,21 +26,21 @@ namespace AIStudio.Wpf.DiagramDesigner (FontViewModel as FontViewModel).PropertyChanged += FontViewModel_PropertyChanged; } - public SelectableViewModelBase(IDiagramViewModel parent, SelectableDesignerItemBase designer) + public SelectableViewModelBase(IDiagramViewModel root, SelectableItemBase designer) { Init(); - LoadDesignerItemViewModel(parent, designer); + LoadDesignerItemViewModel(root, designer); (FontViewModel as FontViewModel).PropertyChanged += FontViewModel_PropertyChanged; } - public SelectableViewModelBase(IDiagramViewModel parent, string json) + public SelectableViewModelBase(IDiagramViewModel root, string json) { Init(); - LoadDesignerItemViewModel(parent, JsonConvert.DeserializeObject(json, ToXmlType()) as SelectableDesignerItemBase); + LoadDesignerItemViewModel(root, JsonConvert.DeserializeObject(json, ToXmlType()) as SelectableItemBase); (FontViewModel as FontViewModel).PropertyChanged += FontViewModel_PropertyChanged; } - public virtual SelectableDesignerItemBase ToXmlObject() + public virtual SelectableItemBase ToXmlObject() { return null; } @@ -72,9 +72,9 @@ namespace AIStudio.Wpf.DiagramDesigner LockObjectViewModel = new LockObjectViewModel(); } - protected virtual void LoadDesignerItemViewModel(IDiagramViewModel parent, SelectableDesignerItemBase designerbase) + protected virtual void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase) { - this.Parent = parent; + this.Root = root; this.Id = designerbase.Id; this.ParentId = designerbase.ParentId; @@ -86,10 +86,16 @@ namespace AIStudio.Wpf.DiagramDesigner FontViewModel = CopyHelper.Mapper(designerbase.FontItem); } - public IDiagramViewModel Parent + public IDiagramViewModel Root { get; set; } + + public SelectableViewModelBase Parent + { + get; set; + } + public Guid Id { get; set; @@ -148,10 +154,16 @@ namespace AIStudio.Wpf.DiagramDesigner { get { - if (Parent?.IsReadOnly == true && Parent?.IsLoading == false) + if (Root?.IsReadOnly == true && Root?.IsLoading == false) { return true; } + + if (Parent?.IsReadOnly == true) + { + return true; + } + if (LockObjectViewModel?.LockObject.FirstOrDefault(p => p.LockFlag == LockFlag.All)?.IsChecked == true) { return true; @@ -170,10 +182,15 @@ namespace AIStudio.Wpf.DiagramDesigner { get { + if (Parent?.IsHitTestVisible == false) + { + return false; + } + return _isHitTestVisible; } set - { + { if (SetProperty(ref _isHitTestVisible, value)) { RaisePropertyChanged("IsReadOnly"); diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/SimpleViewModel/GifImageItemViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/SimpleViewModel/GifImageItemViewModel.cs index 43737c8..5f13aae 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/SimpleViewModel/GifImageItemViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/SimpleViewModel/GifImageItemViewModel.cs @@ -25,17 +25,17 @@ namespace AIStudio.Wpf.DiagramDesigner { } - public GifImageItemViewModel(IDiagramViewModel parent, MediaDesignerItem designer) : base(parent, designer) + public GifImageItemViewModel(IDiagramViewModel root, MediaDesignerItem designer) : base(root, designer) { } - public GifImageItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public GifImageItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } - public override SelectableDesignerItemBase ToXmlObject() + public override SelectableItemBase ToXmlObject() { return new MediaDesignerItem(this); } @@ -60,9 +60,9 @@ namespace AIStudio.Wpf.DiagramDesigner } - protected override void LoadDesignerItemViewModel(IDiagramViewModel parent, SelectableDesignerItemBase designerbase) + protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase) { - base.LoadDesignerItemViewModel(parent, designerbase); + base.LoadDesignerItemViewModel(root, designerbase); MediaDesignerItem designer = designerbase as MediaDesignerItem; diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/SimpleViewModel/ImageItemViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/SimpleViewModel/ImageItemViewModel.cs index 98fa4a3..695bbf6 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/SimpleViewModel/ImageItemViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/SimpleViewModel/ImageItemViewModel.cs @@ -20,17 +20,17 @@ namespace AIStudio.Wpf.DiagramDesigner { } - public ImageItemViewModel(IDiagramViewModel parent, ImageDesignerItem designer) : base(parent, designer) + public ImageItemViewModel(IDiagramViewModel root, ImageDesignerItem designer) : base(root, designer) { } - public ImageItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public ImageItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } - public override SelectableDesignerItemBase ToXmlObject() + public override SelectableItemBase ToXmlObject() { return new ImageDesignerItem(this); } @@ -114,9 +114,9 @@ namespace AIStudio.Wpf.DiagramDesigner } - protected override void LoadDesignerItemViewModel(IDiagramViewModel parent, SelectableDesignerItemBase designerbase) + protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase) { - base.LoadDesignerItemViewModel(parent, designerbase); + base.LoadDesignerItemViewModel(root, designerbase); ImageDesignerItem designer = designerbase as ImageDesignerItem; diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/SimpleViewModel/LogicalGateItemViewModelBase.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/SimpleViewModel/LogicalGateItemViewModelBase.cs index 585723f..eb1032f 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/SimpleViewModel/LogicalGateItemViewModelBase.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/SimpleViewModel/LogicalGateItemViewModelBase.cs @@ -73,17 +73,17 @@ namespace AIStudio.Wpf.DiagramDesigner BuildMenuOptions(); } - public LogicalGateItemViewModelBase(IDiagramViewModel parent, LogicalGateDesignerItemBase designer) : base(parent, designer) + public LogicalGateItemViewModelBase(IDiagramViewModel root, LogicalGateDesignerItemBase designer) : base(root, designer) { BuildMenuOptions(); } - public LogicalGateItemViewModelBase(IDiagramViewModel parent, string json) : base(parent, json) + public LogicalGateItemViewModelBase(IDiagramViewModel root, string json) : base(root, json) { BuildMenuOptions(); } - public override SelectableDesignerItemBase ToXmlObject() + public override SelectableItemBase ToXmlObject() { return new LogicalGateDesignerItemBase(this); } @@ -137,9 +137,9 @@ namespace AIStudio.Wpf.DiagramDesigner } } - protected override void LoadDesignerItemViewModel(IDiagramViewModel parent, SelectableDesignerItemBase designerbase) + protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase) { - base.LoadDesignerItemViewModel(parent, designerbase); + base.LoadDesignerItemViewModel(root, designerbase); LogicalGateDesignerItemBase designer = designerbase as LogicalGateDesignerItemBase; this.LogicalType = designer.LogicalType; diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/SimpleViewModel/MediaItemViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/SimpleViewModel/MediaItemViewModel.cs index d7d2606..44c2f5a 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/SimpleViewModel/MediaItemViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/SimpleViewModel/MediaItemViewModel.cs @@ -14,17 +14,17 @@ namespace AIStudio.Wpf.DiagramDesigner } - public MediaItemViewModel(IDiagramViewModel parent, MediaDesignerItem designer) : base(parent, designer) + public MediaItemViewModel(IDiagramViewModel root, MediaDesignerItem designer) : base(root, designer) { } - public MediaItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public MediaItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } - public override SelectableDesignerItemBase ToXmlObject() + public override SelectableItemBase ToXmlObject() { return new MediaDesignerItem(this); } @@ -42,7 +42,7 @@ namespace AIStudio.Wpf.DiagramDesigner } - protected override void LoadDesignerItemViewModel(IDiagramViewModel parent, SelectableDesignerItemBase designerbase) + protected override void LoadDesignerItemViewModel(IDiagramViewModel parent, SelectableItemBase designerbase) { base.LoadDesignerItemViewModel(parent, designerbase); diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/SimpleViewModel/TextDesignerItemViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/SimpleViewModel/TextDesignerItemViewModel.cs index aa325de..2a9a391 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/SimpleViewModel/TextDesignerItemViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/SimpleViewModel/TextDesignerItemViewModel.cs @@ -10,18 +10,18 @@ namespace AIStudio.Wpf.DiagramDesigner } - public TextDesignerItemViewModel(IDiagramViewModel parent, DesignerItemBase designer) : base(parent, designer) + public TextDesignerItemViewModel(IDiagramViewModel root, DesignerItemBase designer) : base(root, designer) { } - public TextDesignerItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public TextDesignerItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } - public override SelectableDesignerItemBase ToXmlObject() + public override SelectableItemBase ToXmlObject() { return new TextDesignerItem(this); } diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/SimpleViewModel/VideoItemViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/SimpleViewModel/VideoItemViewModel.cs index 7588c24..1f1b176 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/SimpleViewModel/VideoItemViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/SimpleViewModel/VideoItemViewModel.cs @@ -13,13 +13,13 @@ namespace AIStudio.Wpf.DiagramDesigner { } - public VideoItemViewModel(IDiagramViewModel parent, MediaDesignerItem designer) : base(parent, designer) + public VideoItemViewModel(IDiagramViewModel root, MediaDesignerItem designer) : base(root, designer) { } - public VideoItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public VideoItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } diff --git a/AIStudio.Wpf.DiagramHelper/Extensions/ViewModels/BarcodeDesignerItemViewModel.cs b/AIStudio.Wpf.DiagramHelper/Extensions/ViewModels/BarcodeDesignerItemViewModel.cs index e340cc5..b40f66c 100644 --- a/AIStudio.Wpf.DiagramHelper/Extensions/ViewModels/BarcodeDesignerItemViewModel.cs +++ b/AIStudio.Wpf.DiagramHelper/Extensions/ViewModels/BarcodeDesignerItemViewModel.cs @@ -14,16 +14,16 @@ namespace AIStudio.Wpf.DiagramHelper.Extensions.ViewModels } - public BarcodeDesignerItemViewModel(IDiagramViewModel parent, DesignerItemBase designer) : base(parent, designer) + public BarcodeDesignerItemViewModel(IDiagramViewModel root, DesignerItemBase designer) : base(root, designer) { } - public BarcodeDesignerItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public BarcodeDesignerItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } - public override SelectableDesignerItemBase ToXmlObject() + public override SelectableItemBase ToXmlObject() { return new DesignerItemBase(this, Format.ToString()); } @@ -35,9 +35,9 @@ namespace AIStudio.Wpf.DiagramHelper.Extensions.ViewModels } - protected override void LoadDesignerItemViewModel(IDiagramViewModel parent, SelectableDesignerItemBase designerbase) + protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase) { - base.LoadDesignerItemViewModel(parent, designerbase); + base.LoadDesignerItemViewModel(root, designerbase); Format = (BarcodeFormat)Enum.Parse(typeof(BarcodeFormat), (designerbase as DesignerItemBase).Reserve.ToString()); } diff --git a/AIStudio.Wpf.DiagramHelper/Extensions/ViewModels/OutLineTextDesignerItemViewModel.cs b/AIStudio.Wpf.DiagramHelper/Extensions/ViewModels/OutLineTextDesignerItemViewModel.cs index 4137eed..2f54ef0 100644 --- a/AIStudio.Wpf.DiagramHelper/Extensions/ViewModels/OutLineTextDesignerItemViewModel.cs +++ b/AIStudio.Wpf.DiagramHelper/Extensions/ViewModels/OutLineTextDesignerItemViewModel.cs @@ -14,12 +14,12 @@ namespace AIStudio.Wpf.DiagramHelper.Extensions.ViewModels } - public OutLineTextDesignerItemViewModel(IDiagramViewModel parent, DesignerItemBase designer) : base(parent, designer) + public OutLineTextDesignerItemViewModel(IDiagramViewModel root, DesignerItemBase designer) : base(root, designer) { } - public OutLineTextDesignerItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public OutLineTextDesignerItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } diff --git a/AIStudio.Wpf.DiagramHelper/Extensions/ViewModels/PathItemViewModel.cs b/AIStudio.Wpf.DiagramHelper/Extensions/ViewModels/PathItemViewModel.cs index f0f1c7e..d32cf0c 100644 --- a/AIStudio.Wpf.DiagramHelper/Extensions/ViewModels/PathItemViewModel.cs +++ b/AIStudio.Wpf.DiagramHelper/Extensions/ViewModels/PathItemViewModel.cs @@ -11,18 +11,18 @@ namespace AIStudio.Wpf.DiagramHelper.Extensions.ViewModels } - public PathItemViewModel(IDiagramViewModel parent, PathDesignerItem designer) : base(parent, designer) + public PathItemViewModel(IDiagramViewModel root, PathDesignerItem designer) : base(root, designer) { } - public PathItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public PathItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } - public override SelectableDesignerItemBase ToXmlObject() + public override SelectableItemBase ToXmlObject() { return new PathDesignerItem(this); } diff --git a/AIStudio.Wpf.DiagramHelper/Extensions/ViewModels/PersistDesignerItemViewModel.cs b/AIStudio.Wpf.DiagramHelper/Extensions/ViewModels/PersistDesignerItemViewModel.cs index d74966e..835efd7 100644 --- a/AIStudio.Wpf.DiagramHelper/Extensions/ViewModels/PersistDesignerItemViewModel.cs +++ b/AIStudio.Wpf.DiagramHelper/Extensions/ViewModels/PersistDesignerItemViewModel.cs @@ -14,17 +14,17 @@ namespace AIStudio.Wpf.DiagramHelper.Extensions.ViewModels } - public PersistDesignerItemViewModel(IDiagramViewModel parent, PersistDesignerItem designer) : base(parent, designer) + public PersistDesignerItemViewModel(IDiagramViewModel root, PersistDesignerItem designer) : base(root, designer) { } - public PersistDesignerItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public PersistDesignerItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } - public override SelectableDesignerItemBase ToXmlObject() + public override SelectableItemBase ToXmlObject() { return new PersistDesignerItem(this); } @@ -43,9 +43,9 @@ namespace AIStudio.Wpf.DiagramHelper.Extensions.ViewModels this.ShowConnectors = false; } - protected override void LoadDesignerItemViewModel(IDiagramViewModel parent, SelectableDesignerItemBase designerbase) + protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase) { - base.LoadDesignerItemViewModel(parent, designerbase); + base.LoadDesignerItemViewModel(root, designerbase); PersistDesignerItem designer = designerbase as PersistDesignerItem; this.HostUrl = designer.HostUrl; diff --git a/AIStudio.Wpf.DiagramHelper/Extensions/ViewModels/SettingsDesignerItemViewModel.cs b/AIStudio.Wpf.DiagramHelper/Extensions/ViewModels/SettingsDesignerItemViewModel.cs index e41738e..998537d 100644 --- a/AIStudio.Wpf.DiagramHelper/Extensions/ViewModels/SettingsDesignerItemViewModel.cs +++ b/AIStudio.Wpf.DiagramHelper/Extensions/ViewModels/SettingsDesignerItemViewModel.cs @@ -14,17 +14,17 @@ namespace AIStudio.Wpf.DiagramHelper.Extensions.ViewModels } - public SettingsDesignerItemViewModel(IDiagramViewModel parent, SettingsDesignerItem designer) : base(parent, designer) + public SettingsDesignerItemViewModel(IDiagramViewModel root, SettingsDesignerItem designer) : base(root, designer) { } - public SettingsDesignerItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public SettingsDesignerItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } - public override SelectableDesignerItemBase ToXmlObject() + public override SelectableItemBase ToXmlObject() { return new SettingsDesignerItem(this); } @@ -42,9 +42,9 @@ namespace AIStudio.Wpf.DiagramHelper.Extensions.ViewModels this.ShowConnectors = false; } - protected override void LoadDesignerItemViewModel(IDiagramViewModel parent, SelectableDesignerItemBase designerbase) + protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase) { - base.LoadDesignerItemViewModel(parent, designerbase); + base.LoadDesignerItemViewModel(root, designerbase); SettingsDesignerItem designer = designerbase as SettingsDesignerItem; this.Setting = designer.Setting; diff --git a/AIStudio.Wpf.DiagramHelper/Extensions/ViewModels/SvgDesignerItemViewModel.cs b/AIStudio.Wpf.DiagramHelper/Extensions/ViewModels/SvgDesignerItemViewModel.cs index 30eb0aa..74a471a 100644 --- a/AIStudio.Wpf.DiagramHelper/Extensions/ViewModels/SvgDesignerItemViewModel.cs +++ b/AIStudio.Wpf.DiagramHelper/Extensions/ViewModels/SvgDesignerItemViewModel.cs @@ -10,12 +10,12 @@ namespace AIStudio.Wpf.DiagramHelper.Extensions.ViewModels { } - public SvgDesignerItemViewModel(IDiagramViewModel parent, MediaDesignerItem designer) : base(parent, designer) + public SvgDesignerItemViewModel(IDiagramViewModel root, MediaDesignerItem designer) : base(root, designer) { } - public SvgDesignerItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public SvgDesignerItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } diff --git a/AIStudio.Wpf.Flowchart/FlowchartService.cs b/AIStudio.Wpf.Flowchart/FlowchartService.cs index 5c17f05..6a6b6d4 100644 --- a/AIStudio.Wpf.Flowchart/FlowchartService.cs +++ b/AIStudio.Wpf.Flowchart/FlowchartService.cs @@ -249,8 +249,8 @@ namespace AIStudio.Wpf.Flowchart break; case 3: SetStatus(flowNode, status, remark); - FlowNodes[flowNode.Parent].ForEach(p => { if (p.Status == 100) p.Status = 0; }); - Approve(FlowNodes[flowNode.Parent][0], 100); + FlowNodes[flowNode.Root].ForEach(p => { if (p.Status == 100) p.Status = 0; }); + Approve(FlowNodes[flowNode.Root][0], 100); MessageBox.Show("流程重新开始"); break; case 4: @@ -266,7 +266,7 @@ namespace AIStudio.Wpf.Flowchart /// public static void Next(string stepid, FlowNode flowNode) { - FlowNode nextNode = FlowNodes[flowNode.Parent].FirstOrDefault(p => p.Id.ToString() == stepid); + FlowNode nextNode = FlowNodes[flowNode.Root].FirstOrDefault(p => p.Id.ToString() == stepid); SetStatus(nextNode, 1); switch (nextNode.Kind) @@ -312,7 +312,7 @@ namespace AIStudio.Wpf.Flowchart case NodeKinds.COEnd: foreach (var prestep in nextNode.PreStepId) { - var step = FlowNodes[flowNode.Parent].FirstOrDefault(p => p.Id.ToString() == prestep); + var step = FlowNodes[flowNode.Root].FirstOrDefault(p => p.Id.ToString() == prestep); if (step.Status != 100)//如果并行分支没有都完成,那么并行结束节点也未完成 { return; @@ -333,7 +333,7 @@ namespace AIStudio.Wpf.Flowchart { if (flowNode.PreStepId != null && flowNode.PreStepId.Count == 1) { - FlowNode preNode = FlowNodes[flowNode.Parent].FirstOrDefault(p => p.Id.ToString() == flowNode.PreStepId[0]); + FlowNode preNode = FlowNodes[flowNode.Root].FirstOrDefault(p => p.Id.ToString() == flowNode.PreStepId[0]); if (preNode.Kind == NodeKinds.Middle) { SetStatus(preNode, 1); diff --git a/AIStudio.Wpf.Flowchart/Models/DiagramDataExtention.cs b/AIStudio.Wpf.Flowchart/Models/DiagramDataExtention.cs index b85900c..bdeb8f4 100644 --- a/AIStudio.Wpf.Flowchart/Models/DiagramDataExtention.cs +++ b/AIStudio.Wpf.Flowchart/Models/DiagramDataExtention.cs @@ -54,10 +54,10 @@ namespace AIStudio.Wpf.Flowchart.Models diagramNode.ParentId = nodeModel.ParentId.ToString(); } diagramNode.Label = nodeModel.Text; - diagramNode.Width = nodeModel.ItemWidth * nodeModel.Parent.ScreenScale; - diagramNode.Height = nodeModel.ItemHeight * nodeModel.Parent.ScreenScale; - diagramNode.X = nodeModel.Left * nodeModel.Parent.ScreenScale; - diagramNode.Y = nodeModel.Top * nodeModel.Parent.ScreenScale; + diagramNode.Width = nodeModel.ItemWidth * nodeModel.Root.ScreenScale; + diagramNode.Height = nodeModel.ItemHeight * nodeModel.Root.ScreenScale; + diagramNode.X = nodeModel.Left * nodeModel.Root.ScreenScale; + diagramNode.Y = nodeModel.Top * nodeModel.Root.ScreenScale; diagramNode.ZIndex = nodeModel.ZIndex; diagramNode.Type = diagramNode.GetType().Name; diagramNode.PortAlignmentList = nodeModel.Connectors.Select(p => p.Orientation.ToString()).ToList(); @@ -209,7 +209,7 @@ namespace AIStudio.Wpf.Flowchart.Models { nodeModel.ParentId = new Guid(diagramNode.ParentId); } - nodeModel.Parent = diagram; + nodeModel.Root = diagram; nodeModel.Text = diagramNode.Label; nodeModel.ItemWidth = diagramNode.Width / diagram.ScreenScale; nodeModel.ItemHeight = diagramNode.Height / diagram.ScreenScale; diff --git a/AIStudio.Wpf.Flowchart/ViewModels/FlowNode.cs b/AIStudio.Wpf.Flowchart/ViewModels/FlowNode.cs index 2604a41..420173a 100644 --- a/AIStudio.Wpf.Flowchart/ViewModels/FlowNode.cs +++ b/AIStudio.Wpf.Flowchart/ViewModels/FlowNode.cs @@ -17,17 +17,17 @@ namespace AIStudio.Wpf.Flowchart.ViewModels Text = Kind.GetDescription(); } - public FlowNode(IDiagramViewModel parent, DesignerItemBase designer) : base(parent, designer) + public FlowNode(IDiagramViewModel root, DesignerItemBase designer) : base(root, designer) { } - public FlowNode(IDiagramViewModel parent, string json) : base(parent, json) + public FlowNode(IDiagramViewModel root, string json) : base(root, json) { } - public override SelectableDesignerItemBase ToXmlObject() + public override SelectableItemBase ToXmlObject() { return new FlowNodeDesignerItem(this); } @@ -48,9 +48,9 @@ namespace AIStudio.Wpf.Flowchart.ViewModels visualiserService = ApplicationServicesProvider.Instance.Provider.VisualizerService; } - protected override void LoadDesignerItemViewModel(IDiagramViewModel parent, SelectableDesignerItemBase designerbase) + protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase) { - base.LoadDesignerItemViewModel(parent, designerbase); + base.LoadDesignerItemViewModel(root, designerbase); FlowNodeDesignerItem designer = designerbase as FlowNodeDesignerItem; this.Color = designer.Color; @@ -132,12 +132,12 @@ namespace AIStudio.Wpf.Flowchart.ViewModels } - public StartFlowNode(IDiagramViewModel parent, DesignerItemBase designer) : base(parent, designer) + public StartFlowNode(IDiagramViewModel root, DesignerItemBase designer) : base(root, designer) { } - public StartFlowNode(IDiagramViewModel parent, string json) : base(parent, json) + public StartFlowNode(IDiagramViewModel root, string json) : base(root, json) { } @@ -150,12 +150,12 @@ namespace AIStudio.Wpf.Flowchart.ViewModels } - public EndFlowNode(IDiagramViewModel parent, DesignerItemBase designer) : base(parent, designer) + public EndFlowNode(IDiagramViewModel root, DesignerItemBase designer) : base(root, designer) { } - public EndFlowNode(IDiagramViewModel parent, string json) : base(parent, json) + public EndFlowNode(IDiagramViewModel root, string json) : base(root, json) { } @@ -168,12 +168,12 @@ namespace AIStudio.Wpf.Flowchart.ViewModels } - public DecideFlowNode(IDiagramViewModel parent, DesignerItemBase designer) : base(parent, designer) + public DecideFlowNode(IDiagramViewModel root, DesignerItemBase designer) : base(root, designer) { } - public DecideFlowNode(IDiagramViewModel parent, string json) : base(parent, json) + public DecideFlowNode(IDiagramViewModel root, string json) : base(root, json) { } @@ -186,12 +186,12 @@ namespace AIStudio.Wpf.Flowchart.ViewModels } - public COBeginFlowNode(IDiagramViewModel parent, DesignerItemBase designer) : base(parent, designer) + public COBeginFlowNode(IDiagramViewModel root, DesignerItemBase designer) : base(root, designer) { } - public COBeginFlowNode(IDiagramViewModel parent, string json) : base(parent, json) + public COBeginFlowNode(IDiagramViewModel root, string json) : base(root, json) { } @@ -204,12 +204,12 @@ namespace AIStudio.Wpf.Flowchart.ViewModels } - public COEndFlowNode(IDiagramViewModel parent, DesignerItemBase designer) : base(parent, designer) + public COEndFlowNode(IDiagramViewModel root, DesignerItemBase designer) : base(root, designer) { } - public COEndFlowNode(IDiagramViewModel parent, string json) : base(parent, json) + public COEndFlowNode(IDiagramViewModel root, string json) : base(root, json) { } diff --git a/AIStudio.Wpf.Flowchart/ViewModels/MiddleFlowNode.cs b/AIStudio.Wpf.Flowchart/ViewModels/MiddleFlowNode.cs index 755d64b..0239909 100644 --- a/AIStudio.Wpf.Flowchart/ViewModels/MiddleFlowNode.cs +++ b/AIStudio.Wpf.Flowchart/ViewModels/MiddleFlowNode.cs @@ -13,12 +13,12 @@ namespace AIStudio.Wpf.Flowchart.ViewModels } - public MiddleFlowNode(IDiagramViewModel parent, DesignerItemBase designer) : base(parent, designer) + public MiddleFlowNode(IDiagramViewModel root, DesignerItemBase designer) : base(root, designer) { } - public MiddleFlowNode(IDiagramViewModel parent, string json) : base(parent, json) + public MiddleFlowNode(IDiagramViewModel root, string json) : base(root, json) { } diff --git a/AIStudio.Wpf.Logical/ViewModels/LogicalGateItemViewModel.cs b/AIStudio.Wpf.Logical/ViewModels/LogicalGateItemViewModel.cs index e63845f..f82cad3 100644 --- a/AIStudio.Wpf.Logical/ViewModels/LogicalGateItemViewModel.cs +++ b/AIStudio.Wpf.Logical/ViewModels/LogicalGateItemViewModel.cs @@ -15,12 +15,12 @@ namespace AIStudio.Wpf.Logical.ViewModels ColorViewModel.FillColor.Color = Colors.Orange; } - public LogicalGateItemViewModel(IDiagramViewModel parent, LogicalGateDesignerItemBase designer) : base(parent, designer) + public LogicalGateItemViewModel(IDiagramViewModel root, LogicalGateDesignerItemBase designer) : base(root, designer) { } - public LogicalGateItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public LogicalGateItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } @@ -32,9 +32,9 @@ namespace AIStudio.Wpf.Logical.ViewModels visualiserService = ApplicationServicesProvider.Instance.Provider.VisualizerService; } - protected override void LoadDesignerItemViewModel(IDiagramViewModel parent, SelectableDesignerItemBase designerbase) + protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase) { - base.LoadDesignerItemViewModel(parent, designerbase); + base.LoadDesignerItemViewModel(root, designerbase); LogicalGateDesignerItemBase designer = designerbase as LogicalGateDesignerItemBase; this.Value = designer.Value; @@ -68,11 +68,11 @@ namespace AIStudio.Wpf.Logical.ViewModels { } - public AddGateItemViewModel(IDiagramViewModel parent, LogicalGateDesignerItemBase designer) : base(parent, designer) + public AddGateItemViewModel(IDiagramViewModel root, LogicalGateDesignerItemBase designer) : base(root, designer) { } - public AddGateItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public AddGateItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } @@ -84,11 +84,11 @@ namespace AIStudio.Wpf.Logical.ViewModels { } - public SubtractGateItemViewModel(IDiagramViewModel parent, LogicalGateDesignerItemBase designer) : base(parent, designer) + public SubtractGateItemViewModel(IDiagramViewModel root, LogicalGateDesignerItemBase designer) : base(root, designer) { } - public SubtractGateItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public SubtractGateItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } @@ -100,11 +100,11 @@ namespace AIStudio.Wpf.Logical.ViewModels { } - public MultiplyGateItemViewModel(IDiagramViewModel parent, LogicalGateDesignerItemBase designer) : base(parent, designer) + public MultiplyGateItemViewModel(IDiagramViewModel root, LogicalGateDesignerItemBase designer) : base(root, designer) { } - public MultiplyGateItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public MultiplyGateItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } @@ -117,11 +117,11 @@ namespace AIStudio.Wpf.Logical.ViewModels { } - public DivideGateItemViewModel(IDiagramViewModel parent, LogicalGateDesignerItemBase designer) : base(parent, designer) + public DivideGateItemViewModel(IDiagramViewModel root, LogicalGateDesignerItemBase designer) : base(root, designer) { } - public DivideGateItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public DivideGateItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } @@ -134,12 +134,12 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public AverageGateItemViewModel(IDiagramViewModel parent, LogicalGateDesignerItemBase designer) : base(parent, designer) + public AverageGateItemViewModel(IDiagramViewModel root, LogicalGateDesignerItemBase designer) : base(root, designer) { } - public AverageGateItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public AverageGateItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } @@ -152,12 +152,12 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public MODGateItemViewModel(IDiagramViewModel parent, LogicalGateDesignerItemBase designer) : base(parent, designer) + public MODGateItemViewModel(IDiagramViewModel root, LogicalGateDesignerItemBase designer) : base(root, designer) { } - public MODGateItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public MODGateItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } @@ -170,12 +170,12 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public ANDGateItemViewModel(IDiagramViewModel parent, LogicalGateDesignerItemBase designer) : base(parent, designer) + public ANDGateItemViewModel(IDiagramViewModel root, LogicalGateDesignerItemBase designer) : base(root, designer) { } - public ANDGateItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public ANDGateItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } @@ -188,12 +188,12 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public ORGateItemViewModel(IDiagramViewModel parent, LogicalGateDesignerItemBase designer) : base(parent, designer) + public ORGateItemViewModel(IDiagramViewModel root, LogicalGateDesignerItemBase designer) : base(root, designer) { } - public ORGateItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public ORGateItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } @@ -206,12 +206,12 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public XORGateItemViewModel(IDiagramViewModel parent, LogicalGateDesignerItemBase designer) : base(parent, designer) + public XORGateItemViewModel(IDiagramViewModel root, LogicalGateDesignerItemBase designer) : base(root, designer) { } - public XORGateItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public XORGateItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } @@ -224,12 +224,12 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public NOTGateItemViewModel(IDiagramViewModel parent, LogicalGateDesignerItemBase designer) : base(parent, designer) + public NOTGateItemViewModel(IDiagramViewModel root, LogicalGateDesignerItemBase designer) : base(root, designer) { } - public NOTGateItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public NOTGateItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } @@ -242,12 +242,12 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public SHLGateItemViewModel(IDiagramViewModel parent, LogicalGateDesignerItemBase designer) : base(parent, designer) + public SHLGateItemViewModel(IDiagramViewModel root, LogicalGateDesignerItemBase designer) : base(root, designer) { } - public SHLGateItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public SHLGateItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } @@ -260,12 +260,12 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public SHRGateItemViewModel(IDiagramViewModel parent, LogicalGateDesignerItemBase designer) : base(parent, designer) + public SHRGateItemViewModel(IDiagramViewModel root, LogicalGateDesignerItemBase designer) : base(root, designer) { } - public SHRGateItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public SHRGateItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } @@ -278,12 +278,12 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public ROLGateItemViewModel(IDiagramViewModel parent, LogicalGateDesignerItemBase designer) : base(parent, designer) + public ROLGateItemViewModel(IDiagramViewModel root, LogicalGateDesignerItemBase designer) : base(root, designer) { } - public ROLGateItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public ROLGateItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } @@ -296,12 +296,12 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public RORGateItemViewModel(IDiagramViewModel parent, LogicalGateDesignerItemBase designer) : base(parent, designer) + public RORGateItemViewModel(IDiagramViewModel root, LogicalGateDesignerItemBase designer) : base(root, designer) { } - public RORGateItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public RORGateItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } @@ -314,12 +314,12 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public SELGateItemViewModel(IDiagramViewModel parent, LogicalGateDesignerItemBase designer) : base(parent, designer) + public SELGateItemViewModel(IDiagramViewModel root, LogicalGateDesignerItemBase designer) : base(root, designer) { } - public SELGateItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public SELGateItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } @@ -332,12 +332,12 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public MAXGateItemViewModel(IDiagramViewModel parent, LogicalGateDesignerItemBase designer) : base(parent, designer) + public MAXGateItemViewModel(IDiagramViewModel root, LogicalGateDesignerItemBase designer) : base(root, designer) { } - public MAXGateItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public MAXGateItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } @@ -350,12 +350,12 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public MINGateItemViewModel(IDiagramViewModel parent, LogicalGateDesignerItemBase designer) : base(parent, designer) + public MINGateItemViewModel(IDiagramViewModel root, LogicalGateDesignerItemBase designer) : base(root, designer) { } - public MINGateItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public MINGateItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } @@ -368,12 +368,12 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public LIMITGateItemViewModel(IDiagramViewModel parent, LogicalGateDesignerItemBase designer) : base(parent, designer) + public LIMITGateItemViewModel(IDiagramViewModel root, LogicalGateDesignerItemBase designer) : base(root, designer) { } - public LIMITGateItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public LIMITGateItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } @@ -386,12 +386,12 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public GTGateItemViewModel(IDiagramViewModel parent, LogicalGateDesignerItemBase designer) : base(parent, designer) + public GTGateItemViewModel(IDiagramViewModel root, LogicalGateDesignerItemBase designer) : base(root, designer) { } - public GTGateItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public GTGateItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } @@ -404,12 +404,12 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public LTGateItemViewModel(IDiagramViewModel parent, LogicalGateDesignerItemBase designer) : base(parent, designer) + public LTGateItemViewModel(IDiagramViewModel root, LogicalGateDesignerItemBase designer) : base(root, designer) { } - public LTGateItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public LTGateItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } @@ -422,12 +422,12 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public GEGateItemViewModel(IDiagramViewModel parent, LogicalGateDesignerItemBase designer) : base(parent, designer) + public GEGateItemViewModel(IDiagramViewModel root, LogicalGateDesignerItemBase designer) : base(root, designer) { } - public GEGateItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public GEGateItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } @@ -440,12 +440,12 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public LEGateItemViewModel(IDiagramViewModel parent, LogicalGateDesignerItemBase designer) : base(parent, designer) + public LEGateItemViewModel(IDiagramViewModel root, LogicalGateDesignerItemBase designer) : base(root, designer) { } - public LEGateItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public LEGateItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } @@ -458,12 +458,12 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public EQGateItemViewModel(IDiagramViewModel parent, LogicalGateDesignerItemBase designer) : base(parent, designer) + public EQGateItemViewModel(IDiagramViewModel root, LogicalGateDesignerItemBase designer) : base(root, designer) { } - public EQGateItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public EQGateItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } @@ -476,12 +476,12 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public NEGateItemViewModel(IDiagramViewModel parent, LogicalGateDesignerItemBase designer) : base(parent, designer) + public NEGateItemViewModel(IDiagramViewModel root, LogicalGateDesignerItemBase designer) : base(root, designer) { } - public NEGateItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public NEGateItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } @@ -494,12 +494,12 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public ABSGateItemViewModel(IDiagramViewModel parent, LogicalGateDesignerItemBase designer) : base(parent, designer) + public ABSGateItemViewModel(IDiagramViewModel root, LogicalGateDesignerItemBase designer) : base(root, designer) { } - public ABSGateItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public ABSGateItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } @@ -512,12 +512,12 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public SQRTGateItemViewModel(IDiagramViewModel parent, LogicalGateDesignerItemBase designer) : base(parent, designer) + public SQRTGateItemViewModel(IDiagramViewModel root, LogicalGateDesignerItemBase designer) : base(root, designer) { } - public SQRTGateItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public SQRTGateItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } @@ -530,12 +530,12 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public LNGateItemViewModel(IDiagramViewModel parent, LogicalGateDesignerItemBase designer) : base(parent, designer) + public LNGateItemViewModel(IDiagramViewModel root, LogicalGateDesignerItemBase designer) : base(root, designer) { } - public LNGateItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public LNGateItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } @@ -548,12 +548,12 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public LOGGateItemViewModel(IDiagramViewModel parent, LogicalGateDesignerItemBase designer) : base(parent, designer) + public LOGGateItemViewModel(IDiagramViewModel root, LogicalGateDesignerItemBase designer) : base(root, designer) { } - public LOGGateItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public LOGGateItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } @@ -566,12 +566,12 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public EXPGateItemViewModel(IDiagramViewModel parent, LogicalGateDesignerItemBase designer) : base(parent, designer) + public EXPGateItemViewModel(IDiagramViewModel root, LogicalGateDesignerItemBase designer) : base(root, designer) { } - public EXPGateItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public EXPGateItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } @@ -584,12 +584,12 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public SINGateItemViewModel(IDiagramViewModel parent, LogicalGateDesignerItemBase designer) : base(parent, designer) + public SINGateItemViewModel(IDiagramViewModel root, LogicalGateDesignerItemBase designer) : base(root, designer) { } - public SINGateItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public SINGateItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } @@ -602,12 +602,12 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public COSGateItemViewModel(IDiagramViewModel parent, LogicalGateDesignerItemBase designer) : base(parent, designer) + public COSGateItemViewModel(IDiagramViewModel root, LogicalGateDesignerItemBase designer) : base(root, designer) { } - public COSGateItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public COSGateItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } @@ -620,12 +620,12 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public TANGateItemViewModel(IDiagramViewModel parent, LogicalGateDesignerItemBase designer) : base(parent, designer) + public TANGateItemViewModel(IDiagramViewModel root, LogicalGateDesignerItemBase designer) : base(root, designer) { } - public TANGateItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public TANGateItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } @@ -638,12 +638,12 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public ASINGateItemViewModel(IDiagramViewModel parent, LogicalGateDesignerItemBase designer) : base(parent, designer) + public ASINGateItemViewModel(IDiagramViewModel root, LogicalGateDesignerItemBase designer) : base(root, designer) { } - public ASINGateItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public ASINGateItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } @@ -656,12 +656,12 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public ACOSGateItemViewModel(IDiagramViewModel parent, LogicalGateDesignerItemBase designer) : base(parent, designer) + public ACOSGateItemViewModel(IDiagramViewModel root, LogicalGateDesignerItemBase designer) : base(root, designer) { } - public ACOSGateItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public ACOSGateItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } @@ -674,12 +674,12 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public ATANGateItemViewModel(IDiagramViewModel parent, LogicalGateDesignerItemBase designer) : base(parent, designer) + public ATANGateItemViewModel(IDiagramViewModel root, LogicalGateDesignerItemBase designer) : base(root, designer) { } - public ATANGateItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public ATANGateItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } @@ -692,12 +692,12 @@ namespace AIStudio.Wpf.Logical.ViewModels } - public EXPTGateItemViewModel(IDiagramViewModel parent, LogicalGateDesignerItemBase designer) : base(parent, designer) + public EXPTGateItemViewModel(IDiagramViewModel root, LogicalGateDesignerItemBase designer) : base(root, designer) { } - public EXPTGateItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public EXPTGateItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } @@ -710,12 +710,12 @@ namespace AIStudio.Wpf.Logical.ViewModels ItemHeight = 28; } - public ConstantDesignerItemViewModel(IDiagramViewModel parent, LogicalGateDesignerItemBase designer) : base(parent, designer) + public ConstantDesignerItemViewModel(IDiagramViewModel root, LogicalGateDesignerItemBase designer) : base(root, designer) { } - public ConstantDesignerItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public ConstantDesignerItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } @@ -728,19 +728,19 @@ namespace AIStudio.Wpf.Logical.ViewModels ItemHeight = 28; } - public InputItemViewModel(IDiagramViewModel parent, LogicalGateDesignerItemBase designer) : base(parent, designer) + public InputItemViewModel(IDiagramViewModel root, LogicalGateDesignerItemBase designer) : base(root, designer) { } - public InputItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public InputItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } - protected override void LoadDesignerItemViewModel(IDiagramViewModel parent, SelectableDesignerItemBase designerbase) + protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase) { - base.LoadDesignerItemViewModel(parent, designerbase); + base.LoadDesignerItemViewModel(root, designerbase); LogicalGateDesignerItemBase designer = designerbase as LogicalGateDesignerItemBase; this.Value = designer.Value; @@ -782,19 +782,19 @@ namespace AIStudio.Wpf.Logical.ViewModels ItemHeight = 28; } - public OutputItemViewModel(IDiagramViewModel parent, LogicalGateDesignerItemBase designer) : base(parent, designer) + public OutputItemViewModel(IDiagramViewModel root, LogicalGateDesignerItemBase designer) : base(root, designer) { } - public OutputItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public OutputItemViewModel(IDiagramViewModel root, string json) : base(root, json) { } - protected override void LoadDesignerItemViewModel(IDiagramViewModel parent, SelectableDesignerItemBase designerbase) + protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase) { - base.LoadDesignerItemViewModel(parent, designerbase); + base.LoadDesignerItemViewModel(root, designerbase); LogicalGateDesignerItemBase designer = designerbase as LogicalGateDesignerItemBase; this.Value = designer.Value; @@ -843,12 +843,12 @@ namespace AIStudio.Wpf.Logical.ViewModels BuildMenuOptions(); } - public TimerDesignerItemViewModel(IDiagramViewModel parent, LogicalGateDesignerItemBase designer) : base(parent, designer) + public TimerDesignerItemViewModel(IDiagramViewModel root, LogicalGateDesignerItemBase designer) : base(root, designer) { BuildMenuOptions(); } - public TimerDesignerItemViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public TimerDesignerItemViewModel(IDiagramViewModel root, string json) : base(root, json) { BuildMenuOptions(); } @@ -862,9 +862,9 @@ namespace AIStudio.Wpf.Logical.ViewModels readDataTimer.Interval = 1000; } - protected override void LoadDesignerItemViewModel(IDiagramViewModel parent, SelectableDesignerItemBase designerbase) + protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase) { - base.LoadDesignerItemViewModel(parent, designerbase); + base.LoadDesignerItemViewModel(root, designerbase); if (IsEnabled) { diff --git a/AIStudio.Wpf.SFC/Models/SFCNodeDesignerItem.cs b/AIStudio.Wpf.SFC/Models/SFCNodeDesignerItem.cs index 8f50889..6539759 100644 --- a/AIStudio.Wpf.SFC/Models/SFCNodeDesignerItem.cs +++ b/AIStudio.Wpf.SFC/Models/SFCNodeDesignerItem.cs @@ -22,17 +22,8 @@ namespace AIStudio.Wpf.SFC.Models this.Connectors = new List(); foreach (var fullyCreatedConnectorInfo in item.Connectors) { - ConnectorItem connector = new ConnectorItem() - { - XRatio = fullyCreatedConnectorInfo.XRatio, - YRatio = fullyCreatedConnectorInfo.YRatio, - ConnectorWidth = fullyCreatedConnectorInfo.ConnectorWidth, - ConnectorHeight = fullyCreatedConnectorInfo.ConnectorHeight, - Orientation = fullyCreatedConnectorInfo.Orientation, - IsInnerPoint = fullyCreatedConnectorInfo.IsInnerPoint, - ValueTypePoint = fullyCreatedConnectorInfo.ValueTypePoint, - ConnectorValue = fullyCreatedConnectorInfo.ConnectorValue - }; + ConnectorItem connector = new ConnectorItem(fullyCreatedConnectorInfo); + this.Connectors.Add(connector); } Kind = item.Kind; diff --git a/AIStudio.Wpf.SFC/ViewModels/SFCActionNode.cs b/AIStudio.Wpf.SFC/ViewModels/SFCActionNode.cs index 1429bb3..7ca3163 100644 --- a/AIStudio.Wpf.SFC/ViewModels/SFCActionNode.cs +++ b/AIStudio.Wpf.SFC/ViewModels/SFCActionNode.cs @@ -16,12 +16,12 @@ namespace AIStudio.Wpf.SFC.ViewModels ExecuteAddLeftInput(null); } - public SFCActionNode(IDiagramViewModel parent, DesignerItemBase designer) : base(parent, designer) + public SFCActionNode(IDiagramViewModel root, DesignerItemBase designer) : base(root, designer) { } - public SFCActionNode(IDiagramViewModel parent, string json) : base(parent, json) + public SFCActionNode(IDiagramViewModel root, string json) : base(root, json) { } diff --git a/AIStudio.Wpf.SFC/ViewModels/SFCCOBeginNode.cs b/AIStudio.Wpf.SFC/ViewModels/SFCCOBeginNode.cs index e10a99e..d43b7fb 100644 --- a/AIStudio.Wpf.SFC/ViewModels/SFCCOBeginNode.cs +++ b/AIStudio.Wpf.SFC/ViewModels/SFCCOBeginNode.cs @@ -17,11 +17,11 @@ namespace AIStudio.Wpf.SFC.ViewModels ExecuteAddBottomOutput(null); } - public SFCCOBeginNode(IDiagramViewModel parent, DesignerItemBase designer) : base(parent, designer) + public SFCCOBeginNode(IDiagramViewModel root, DesignerItemBase designer) : base(root, designer) { } - public SFCCOBeginNode(IDiagramViewModel parent, string json) : base(parent, json) + public SFCCOBeginNode(IDiagramViewModel root, string json) : base(root, json) { } diff --git a/AIStudio.Wpf.SFC/ViewModels/SFCCOEndNode.cs b/AIStudio.Wpf.SFC/ViewModels/SFCCOEndNode.cs index aa92a80..4982215 100644 --- a/AIStudio.Wpf.SFC/ViewModels/SFCCOEndNode.cs +++ b/AIStudio.Wpf.SFC/ViewModels/SFCCOEndNode.cs @@ -17,11 +17,11 @@ namespace AIStudio.Wpf.SFC.ViewModels ExecuteAddTopInput(null); } - public SFCCOEndNode(IDiagramViewModel parent, DesignerItemBase designer) : base(parent, designer) + public SFCCOEndNode(IDiagramViewModel root, DesignerItemBase designer) : base(root, designer) { } - public SFCCOEndNode(IDiagramViewModel parent, string json) : base(parent, json) + public SFCCOEndNode(IDiagramViewModel root, string json) : base(root, json) { } diff --git a/AIStudio.Wpf.SFC/ViewModels/SFCConditionNode.cs b/AIStudio.Wpf.SFC/ViewModels/SFCConditionNode.cs index 9e47b93..7167989 100644 --- a/AIStudio.Wpf.SFC/ViewModels/SFCConditionNode.cs +++ b/AIStudio.Wpf.SFC/ViewModels/SFCConditionNode.cs @@ -20,11 +20,11 @@ namespace AIStudio.Wpf.SFC.ViewModels ExecuteAddBottomOutput(null); } - public SFCConditionNode(IDiagramViewModel parent, DesignerItemBase designer) : base(parent, designer) + public SFCConditionNode(IDiagramViewModel root, DesignerItemBase designer) : base(root, designer) { } - public SFCConditionNode(IDiagramViewModel parent, string json) : base(parent, json) + public SFCConditionNode(IDiagramViewModel root, string json) : base(root, json) { } diff --git a/AIStudio.Wpf.SFC/ViewModels/SFCNode.cs b/AIStudio.Wpf.SFC/ViewModels/SFCNode.cs index 04f836e..edf27d5 100644 --- a/AIStudio.Wpf.SFC/ViewModels/SFCNode.cs +++ b/AIStudio.Wpf.SFC/ViewModels/SFCNode.cs @@ -21,17 +21,17 @@ namespace AIStudio.Wpf.SFC.ViewModels ItemHeight = 40; } - public SFCNode(IDiagramViewModel parent, DesignerItemBase designer) : base(parent, designer) + public SFCNode(IDiagramViewModel root, DesignerItemBase designer) : base(root, designer) { } - public SFCNode(IDiagramViewModel parent, string json) : base(parent, json) + public SFCNode(IDiagramViewModel root, string json) : base(root, json) { } - public override SelectableDesignerItemBase ToXmlObject() + public override SelectableItemBase ToXmlObject() { return new SFCNodeDesignerItem(this); } @@ -54,9 +54,9 @@ namespace AIStudio.Wpf.SFC.ViewModels visualiserService = ApplicationServicesProvider.Instance.Provider.VisualizerService; } - protected override void LoadDesignerItemViewModel(IDiagramViewModel parent, SelectableDesignerItemBase designerbase) + protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase) { - base.LoadDesignerItemViewModel(parent, designerbase); + base.LoadDesignerItemViewModel(root, designerbase); SFCNodeDesignerItem designer = designerbase as SFCNodeDesignerItem; this.Kind = designer.Kind; diff --git a/AIStudio.Wpf.SFC/ViewModels/SFCNodeNode.cs b/AIStudio.Wpf.SFC/ViewModels/SFCNodeNode.cs index f34e3be..57613b3 100644 --- a/AIStudio.Wpf.SFC/ViewModels/SFCNodeNode.cs +++ b/AIStudio.Wpf.SFC/ViewModels/SFCNodeNode.cs @@ -14,11 +14,11 @@ namespace AIStudio.Wpf.SFC.ViewModels ExecuteAddActionOutput(null); } - public SFCNodeNode(IDiagramViewModel parent, DesignerItemBase designer) : base(parent, designer) + public SFCNodeNode(IDiagramViewModel root, DesignerItemBase designer) : base(root, designer) { } - public SFCNodeNode(IDiagramViewModel parent, string json) : base(parent, json) + public SFCNodeNode(IDiagramViewModel root, string json) : base(root, json) { } diff --git a/AIStudio.Wpf.SFC/ViewModels/SFCStartNode.cs b/AIStudio.Wpf.SFC/ViewModels/SFCStartNode.cs index 3915300..b148b8d 100644 --- a/AIStudio.Wpf.SFC/ViewModels/SFCStartNode.cs +++ b/AIStudio.Wpf.SFC/ViewModels/SFCStartNode.cs @@ -13,11 +13,11 @@ namespace AIStudio.Wpf.SFC.ViewModels ExecuteAddBottomOutput(null); } - public SFCStartNode(IDiagramViewModel parent, DesignerItemBase designer) : base(parent, designer) + public SFCStartNode(IDiagramViewModel root, DesignerItemBase designer) : base(root, designer) { } - public SFCStartNode(IDiagramViewModel parent, string json) : base(parent, json) + public SFCStartNode(IDiagramViewModel root, string json) : base(root, json) { } diff --git a/AIStudio.Wpf.SFC/ViewModels/Simulate_ListViewModel.cs b/AIStudio.Wpf.SFC/ViewModels/Simulate_ListViewModel.cs index e887ae1..a878236 100644 --- a/AIStudio.Wpf.SFC/ViewModels/Simulate_ListViewModel.cs +++ b/AIStudio.Wpf.SFC/ViewModels/Simulate_ListViewModel.cs @@ -14,11 +14,11 @@ namespace AIStudio.Wpf.SFC.ViewModels ItemHeight = 260; } - public Simulate_ListViewModel(IDiagramViewModel parent, DesignerItemBase designer) : base(parent, designer) + public Simulate_ListViewModel(IDiagramViewModel root, DesignerItemBase designer) : base(root, designer) { } - public Simulate_ListViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public Simulate_ListViewModel(IDiagramViewModel root, string json) : base(root, json) { } diff --git a/AIStudio.Wpf.SFC/ViewModels/Simulate_SolenoidViewModel.cs b/AIStudio.Wpf.SFC/ViewModels/Simulate_SolenoidViewModel.cs index 75e8c92..67307af 100644 --- a/AIStudio.Wpf.SFC/ViewModels/Simulate_SolenoidViewModel.cs +++ b/AIStudio.Wpf.SFC/ViewModels/Simulate_SolenoidViewModel.cs @@ -19,11 +19,11 @@ namespace AIStudio.Wpf.SFC.ViewModels ExecuteAddRightOutput(null); } - public Simulate_SolenoidViewModel(IDiagramViewModel parent, DesignerItemBase designer) : base(parent, designer) + public Simulate_SolenoidViewModel(IDiagramViewModel root, DesignerItemBase designer) : base(root, designer) { } - public Simulate_SolenoidViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public Simulate_SolenoidViewModel(IDiagramViewModel root, string json) : base(root, json) { } diff --git a/AIStudio.Wpf.SFC/ViewModels/Simulate_StartViewModel.cs b/AIStudio.Wpf.SFC/ViewModels/Simulate_StartViewModel.cs index e29cdda..6ee95f4 100644 --- a/AIStudio.Wpf.SFC/ViewModels/Simulate_StartViewModel.cs +++ b/AIStudio.Wpf.SFC/ViewModels/Simulate_StartViewModel.cs @@ -16,11 +16,11 @@ namespace AIStudio.Wpf.SFC.ViewModels ExecuteAddRightOutput(null); } - public Simulate_StartViewModel(IDiagramViewModel parent, DesignerItemBase designer) : base(parent, designer) + public Simulate_StartViewModel(IDiagramViewModel root, DesignerItemBase designer) : base(root, designer) { } - public Simulate_StartViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public Simulate_StartViewModel(IDiagramViewModel root, string json) : base(root, json) { } diff --git a/AIStudio.Wpf.SFC/ViewModels/Simulate_TankViewModel.cs b/AIStudio.Wpf.SFC/ViewModels/Simulate_TankViewModel.cs index a654b99..b379ceb 100644 --- a/AIStudio.Wpf.SFC/ViewModels/Simulate_TankViewModel.cs +++ b/AIStudio.Wpf.SFC/ViewModels/Simulate_TankViewModel.cs @@ -19,11 +19,11 @@ namespace AIStudio.Wpf.SFC.ViewModels ExecuteAddRightOutput(null); } - public Simulate_TankViewModel(IDiagramViewModel parent, DesignerItemBase designer) : base(parent, designer) + public Simulate_TankViewModel(IDiagramViewModel root, DesignerItemBase designer) : base(root, designer) { } - public Simulate_TankViewModel(IDiagramViewModel parent, string json) : base(parent, json) + public Simulate_TankViewModel(IDiagramViewModel root, string json) : base(root, json) { }