mirror of
https://gitee.com/akwkevin/aistudio.-wpf.-diagram
synced 2026-03-03 00:00:57 +08:00
xx
This commit is contained in:
@@ -150,8 +150,8 @@ namespace AIStudio.Wpf.Mind.Helpers
|
||||
double lefttop = mindNode.MiddlePosition.Y - Math.Min(mindNode.DesiredSize.Height, rights.SumOrDefault(p => p.DesiredSize.Height)) / 2;
|
||||
foreach (var child in rights)
|
||||
{
|
||||
child.Left = left + child.Spacing.Width + child.Offset.X;
|
||||
child.Top = lefttop + child.DesiredSize.Height / 2 - child.ItemHeight / 2 + child.Offset.Y;
|
||||
child.Left = left + child.Spacing.Width + child.Offset.X - child.RootNode.Offset.X;
|
||||
child.Top = lefttop + child.DesiredSize.Height / 2 - child.ItemHeight / 2 + child.Offset.Y - child.RootNode.Offset.Y;
|
||||
child.DesiredPosition = new PointBase(left + child.Spacing.Width, lefttop + child.DesiredSize.Height / 2 - child.ItemHeight / 2);
|
||||
lefttop += child.DesiredSize.Height;
|
||||
|
||||
@@ -168,8 +168,8 @@ namespace AIStudio.Wpf.Mind.Helpers
|
||||
double righttop = mindNode.MiddlePosition.Y - Math.Min(mindNode.DesiredSize.Height, lefts.SumOrDefault(p => p.DesiredSize.Height)) / 2;
|
||||
foreach (var child in lefts)
|
||||
{
|
||||
child.Left = right - child.Spacing.Width - child.ItemWidth + child.Offset.X;
|
||||
child.Top = righttop + child.DesiredSize.Height / 2 - child.ItemHeight / 2 + child.Offset.Y;
|
||||
child.Left = right - child.Spacing.Width - child.ItemWidth + child.Offset.X - child.RootNode.Offset.X;
|
||||
child.Top = righttop + child.DesiredSize.Height / 2 - child.ItemHeight / 2 + child.Offset.Y - child.RootNode.Offset.Y;
|
||||
child.DesiredPosition = new PointBase(right - child.Spacing.Width - child.ItemWidth, righttop + child.DesiredSize.Height / 2 - child.ItemHeight / 2);
|
||||
righttop += child.DesiredSize.Height;
|
||||
|
||||
@@ -183,6 +183,7 @@ namespace AIStudio.Wpf.Mind.Helpers
|
||||
}
|
||||
|
||||
mindNode.DesiredPosition = mindNode.Position;
|
||||
//mindNode.Offset = new PointBase();
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -194,8 +195,8 @@ namespace AIStudio.Wpf.Mind.Helpers
|
||||
{
|
||||
foreach (var child in mindNode.Children)
|
||||
{
|
||||
child.Left = left + child.Spacing.Width + child.Offset.X;
|
||||
child.Top = top + child.DesiredSize.Height / 2 - child.ItemHeight / 2 + child.Offset.Y;
|
||||
child.Left = left + child.Spacing.Width + child.Offset.X - child.RootNode.Offset.X;
|
||||
child.Top = top + child.DesiredSize.Height / 2 - child.ItemHeight / 2 + child.Offset.Y - child.RootNode.Offset.Y;
|
||||
child.DesiredPosition = new PointBase(left + child.Spacing.Width, top + child.DesiredSize.Height / 2 - child.ItemHeight / 2);
|
||||
top += child.DesiredSize.Height;
|
||||
|
||||
@@ -216,8 +217,8 @@ namespace AIStudio.Wpf.Mind.Helpers
|
||||
{
|
||||
foreach (var child in mindNode.Children)
|
||||
{
|
||||
child.Left = right - child.Spacing.Width - child.ItemWidth + child.Offset.X;
|
||||
child.Top = top + child.DesiredSize.Height / 2 - child.ItemHeight / 2 + child.Offset.Y;
|
||||
child.Left = right - child.Spacing.Width - child.ItemWidth + child.Offset.X - child.RootNode.Offset.X;
|
||||
child.Top = top + child.DesiredSize.Height / 2 - child.ItemHeight / 2 + child.Offset.Y - child.RootNode.Offset.Y;
|
||||
child.DesiredPosition = new PointBase(right - child.Spacing.Width - child.ItemWidth, top + child.DesiredSize.Height / 2 - child.ItemHeight / 2);
|
||||
top += child.DesiredSize.Height;
|
||||
|
||||
|
||||
@@ -124,8 +124,8 @@ namespace AIStudio.Wpf.Mind.Models
|
||||
|
||||
public LinkInfoItem(LinkInfo linkinfo)
|
||||
{
|
||||
Url = linkinfo.Url;
|
||||
Text = linkinfo.Text;
|
||||
Url = linkinfo?.Url;
|
||||
Text = linkinfo?.Text;
|
||||
}
|
||||
|
||||
[XmlAttribute]
|
||||
@@ -152,8 +152,8 @@ namespace AIStudio.Wpf.Mind.Models
|
||||
|
||||
public ImageInfoItem(ImageInfo imageInfo)
|
||||
{
|
||||
Url = imageInfo.Url;
|
||||
Text = imageInfo.Text;
|
||||
Url = imageInfo?.Url;
|
||||
Text = imageInfo?.Text;
|
||||
}
|
||||
|
||||
public string Url
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.Design;
|
||||
using System.Windows;
|
||||
using System.Xml.Serialization;
|
||||
using AIStudio.Wpf.DiagramDesigner;
|
||||
@@ -69,8 +70,22 @@ namespace AIStudio.Wpf.Flowchart.Models
|
||||
mindNode.Spacing = Spacing;
|
||||
mindNode.Offset = Offset;
|
||||
mindNode.IsExpanded = IsExpanded;
|
||||
mindNode.LinkInfo = new LinkInfo(LinkInfoModel?.Url, LinkInfoModel?.Text);
|
||||
mindNode.ImageInfo = new ImageInfo(ImageInfoModel?.Url, ImageInfoModel?.Text);
|
||||
if (string.IsNullOrEmpty(LinkInfoModel?.Url) && string.IsNullOrEmpty(LinkInfoModel?.Text))
|
||||
{
|
||||
mindNode.LinkInfo = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
mindNode.LinkInfo = new LinkInfo(LinkInfoModel?.Url, LinkInfoModel?.Text);
|
||||
}
|
||||
if (string.IsNullOrEmpty(ImageInfoModel?.Url) && string.IsNullOrEmpty(ImageInfoModel?.Text))
|
||||
{
|
||||
mindNode.ImageInfo = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
mindNode.ImageInfo = new ImageInfo(ImageInfoModel?.Url, ImageInfoModel?.Text);
|
||||
}
|
||||
mindNode.Remark = Remark;
|
||||
mindNode.Priority = Priority;
|
||||
mindNode.Rate = Rate;
|
||||
@@ -82,8 +97,6 @@ namespace AIStudio.Wpf.Flowchart.Models
|
||||
mindNode.InitLayout(false);
|
||||
return mindNode;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
public class LinkInfoModel
|
||||
@@ -95,8 +108,8 @@ namespace AIStudio.Wpf.Flowchart.Models
|
||||
|
||||
public LinkInfoModel(LinkInfo linkinfo)
|
||||
{
|
||||
Url = linkinfo.Url;
|
||||
Text = linkinfo.Text;
|
||||
Url = linkinfo?.Url;
|
||||
Text = linkinfo?.Text;
|
||||
}
|
||||
|
||||
public string Url
|
||||
@@ -119,8 +132,8 @@ namespace AIStudio.Wpf.Flowchart.Models
|
||||
|
||||
public ImageInfoModel(ImageInfo imageInfo)
|
||||
{
|
||||
Url = imageInfo.Url;
|
||||
Text = imageInfo.Text;
|
||||
Url = imageInfo?.Url;
|
||||
Text = imageInfo?.Text;
|
||||
}
|
||||
|
||||
public string Url
|
||||
|
||||
@@ -751,7 +751,6 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
List<MindNode> parents = new List<MindNode>();
|
||||
foreach (var item in items.OfType<MindNode>())
|
||||
{
|
||||
//item.DesiredPosition = new PointBase(item.DesiredPosition?.X ?? 0 + OffsetX, item.DesiredPosition?.Y ?? 0 + OffsetY);
|
||||
var parent = Items.OfType<MindNode>().FirstOrDefault(p => p.Id == item.ParentId);
|
||||
if (parent != null && !items.Contains(parent))
|
||||
{
|
||||
@@ -759,7 +758,7 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
}
|
||||
else if (item.ParentId == Guid.Empty)
|
||||
{
|
||||
item.Offset = new PointBase(OffsetX, OffsetX);
|
||||
//item.Offset = new PointBase(item.Offset.X - OffsetX, item.Offset.Y - OffsetY);
|
||||
parents.Add(item);
|
||||
item.InitLayout(false);
|
||||
}
|
||||
@@ -1145,12 +1144,15 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
|
||||
private void Move(MindNode rootitem, double? left, double? top)
|
||||
{
|
||||
|
||||
if (left == null)
|
||||
left = (PageSize.Width - rootitem.ItemWidth) / 2;
|
||||
if (top == null)
|
||||
top = (PageSize.Height - rootitem.ItemHeight) / 2;
|
||||
var offset = rootitem.Offset;
|
||||
rootitem.Left = left.Value;
|
||||
rootitem.Top = top.Value;
|
||||
rootitem.Offset = offset;
|
||||
rootitem?.LayoutUpdated();
|
||||
FitViewModel = new FitViewModel() { BoundingRect = rootitem.GetBounds() };
|
||||
}
|
||||
@@ -1354,7 +1356,7 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
item.IsSelected = false;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
@@ -108,7 +108,7 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
public void ThemeChange()
|
||||
{
|
||||
MindThemeHelper.ThemeChange(this, MindThemeModel);
|
||||
}
|
||||
}
|
||||
|
||||
protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
|
||||
{
|
||||
@@ -119,8 +119,22 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
Spacing = designer.Spacing;
|
||||
Offset = designer.Offset;
|
||||
IsExpanded = designer.IsExpanded;
|
||||
LinkInfo = new LinkInfo(designer.LinkInfoItem?.Url, designer.LinkInfoItem?.Text);
|
||||
ImageInfo = new ImageInfo(designer.ImageInfoItem?.Url, designer.ImageInfoItem?.Text);
|
||||
if (string.IsNullOrEmpty(designer.LinkInfoItem?.Url) && string.IsNullOrEmpty(designer.LinkInfoItem?.Text))
|
||||
{
|
||||
LinkInfo = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
LinkInfo = new LinkInfo(designer.LinkInfoItem?.Url, designer.LinkInfoItem?.Text);
|
||||
}
|
||||
if (string.IsNullOrEmpty(designer.ImageInfoItem?.Url) && string.IsNullOrEmpty(designer.ImageInfoItem?.Text))
|
||||
{
|
||||
ImageInfo = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
ImageInfo = new ImageInfo(designer.ImageInfoItem?.Url, designer.ImageInfoItem?.Text);
|
||||
}
|
||||
Remark = designer.Remark;
|
||||
Priority = designer.Priority;
|
||||
Rate = designer.Rate;
|
||||
@@ -235,44 +249,7 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
|
||||
public PointBase Offset
|
||||
{
|
||||
get
|
||||
{
|
||||
PointBase point;
|
||||
if (NodeLevel == 0)
|
||||
{
|
||||
if (DesiredPosition == null)
|
||||
{
|
||||
point = new PointBase();
|
||||
}
|
||||
else
|
||||
{
|
||||
point = new PointBase(Position.X - DesiredPosition.Value.X, Position.Y - DesiredPosition.Value.Y);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (DesiredPosition == null)
|
||||
{
|
||||
point = new PointBase();
|
||||
}
|
||||
else
|
||||
{
|
||||
point = new PointBase(Position.X - DesiredPosition.Value.X - RootNode.Offset.X, Position.Y - DesiredPosition.Value.Y - RootNode.Offset.Y);
|
||||
}
|
||||
}
|
||||
return point;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (NodeLevel == 0)
|
||||
{
|
||||
DesiredPosition = new PointBase(Position.X - value.X, Position.Y - value.Y);
|
||||
}
|
||||
else
|
||||
{
|
||||
DesiredPosition = new PointBase(Position.X - value.X - RootNode.Offset.X, Position.Y - value.Y - RootNode.Offset.Y);
|
||||
}
|
||||
}
|
||||
get; set;
|
||||
}
|
||||
|
||||
private ConnectorOrientation _connectorOrientation = ConnectorOrientation.Left;
|
||||
@@ -547,6 +524,22 @@ namespace AIStudio.Wpf.Mind.ViewModels
|
||||
|
||||
switch (e.PropertyName)
|
||||
{
|
||||
case nameof(Left):
|
||||
{
|
||||
if (e is ValuePropertyChangedEventArgs valuePropertyChangedEventArgs)
|
||||
{
|
||||
UpdateOffsetX((double)valuePropertyChangedEventArgs.OldValue, (double)valuePropertyChangedEventArgs.NewValue);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case nameof(Top):
|
||||
{
|
||||
if (e is ValuePropertyChangedEventArgs valuePropertyChangedEventArgs)
|
||||
{
|
||||
UpdateOffsetY((double)valuePropertyChangedEventArgs.OldValue, (double)valuePropertyChangedEventArgs.NewValue);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case nameof(IsExpanded):
|
||||
case nameof(ItemWidth):
|
||||
case nameof(ItemHeight):
|
||||
|
||||
Reference in New Issue
Block a user