修复demo中彩色节点的bug

This commit is contained in:
艾竹
2023-05-03 18:35:01 +08:00
parent c462d110ff
commit b9210cb6d9
10 changed files with 123 additions and 46 deletions

View File

@@ -640,6 +640,11 @@ namespace AIStudio.Wpf.DiagramDesigner
}
}
public override bool Verify()
{
return IsFullConnection == false || SourceConnectorInfo?.CanAttachTo(SinkConnectorInfo) == true;
}
private void UpdateArea()
{
Area = new RectangleBase(SourceA, SourceB);

View File

@@ -158,8 +158,21 @@ namespace AIStudio.Wpf.DiagramDesigner
}
}
private bool _disableAttachTo;
public bool DisableAttachTo
{
get
{
return _disableAttachTo;
}
set
{
SetProperty(ref _disableAttachTo, value);
}
}
public virtual bool CanAttachTo(ConnectorInfoBase port)
=> port != this && !port.IsReadOnly;
=> port != null && port != this && !port.IsReadOnly;
#endregion
}
}

View File

@@ -1367,7 +1367,7 @@ namespace AIStudio.Wpf.DiagramDesigner
public bool AddVerify(SelectableDesignerItemViewModelBase item)
{
if (item.InitData() == false)
if (item.Verify() == false)
return false;
return true;
@@ -1462,7 +1462,7 @@ namespace AIStudio.Wpf.DiagramDesigner
Remove(olditems);
},
() => {
Add(olditems);
Add(olditems);
});
}
}
@@ -3298,9 +3298,9 @@ namespace AIStudio.Wpf.DiagramDesigner
{
if (SearchCaseMatch == true)
{
return input.Replace(searchtext, replcetext);
return input.Replace(searchtext, replcetext);
}
else
else
{
return Regex.Replace(input, searchtext, replcetext, RegexOptions.IgnoreCase);
}
@@ -3362,22 +3362,38 @@ namespace AIStudio.Wpf.DiagramDesigner
{
if (connectorVertexType == ConnectorVertexType.Start)
{
if (partialConnection.SourceConnectorInfo.Position.DistanceTo(port.Position) < DiagramOption.SnappingOption.SnappingRadius &&
partialConnection.SinkConnectorInfo?.CanAttachTo(port) == true)
if (partialConnection.SourceConnectorInfo.Position.DistanceTo(port.Position) < DiagramOption.SnappingOption.SnappingRadius)
{
port.DataItem.ShowConnectors = true;
port.BeAttachTo = true;
return port;
if (partialConnection.SinkConnectorInfo?.CanAttachTo(port) == true)
{
port.DataItem.ShowConnectors = true;
port.BeAttachTo = true;
return port;
}
else
{
port.DataItem.ShowConnectors = true;
port.DisableAttachTo = true;
return null;
}
}
}
else if (connectorVertexType == ConnectorVertexType.End)
{
if (partialConnection.SinkConnectorInfo.Position.DistanceTo(port.Position) < DiagramOption.SnappingOption.SnappingRadius &&
partialConnection.SourceConnectorInfo?.CanAttachTo(port) == true)
if (partialConnection.SinkConnectorInfo.Position.DistanceTo(port.Position) < DiagramOption.SnappingOption.SnappingRadius)
{
port.DataItem.ShowConnectors = true;
port.BeAttachTo = true;
return port;
if (partialConnection.SourceConnectorInfo?.CanAttachTo(port) == true)
{
port.DataItem.ShowConnectors = true;
port.BeAttachTo = true;
return port;
}
else
{
port.DataItem.ShowConnectors = true;
port.DisableAttachTo = true;
return null;
}
}
}
}
@@ -3393,12 +3409,20 @@ namespace AIStudio.Wpf.DiagramDesigner
ClearNearPort();
foreach (var port in Items.OfType<DesignerItemViewModelBase>().ToList().SelectMany(n => n.Connectors))
{
if (partialConnection.OnGoingPosition.DistanceTo(port.Position) < DiagramOption.SnappingOption.SnappingRadius &&
partialConnection.SourceConnectorInfoFully?.CanAttachTo(port) == true)
if (partialConnection.OnGoingPosition.DistanceTo(port.Position) < DiagramOption.SnappingOption.SnappingRadius)
{
port.DataItem.ShowConnectors = true;
port.BeAttachTo = true;
return port;
if (partialConnection.SourceConnectorInfo?.CanAttachTo(port) == true)
{
port.BeAttachTo = true;
return port;
}
else
{
port.DisableAttachTo = true;
return null;
}
}
}
@@ -3407,7 +3431,11 @@ namespace AIStudio.Wpf.DiagramDesigner
public void ClearNearPort()
{
Items.OfType<DesignerItemViewModelBase>().ToList().SelectMany(n => n.Connectors).Where(p => p.BeAttachTo == true).ToList().ForEach(p => p.BeAttachTo = false);
Items.OfType<DesignerItemViewModelBase>().ToList().SelectMany(n => n.Connectors).Where(p => p.BeAttachTo == true || p.DisableAttachTo == true).ToList()
.ForEach(p => {
p.DisableAttachTo = false;
p.BeAttachTo = false;
});
}
#endregion
}

View File

@@ -60,7 +60,7 @@ namespace AIStudio.Wpf.DiagramDesigner
base.LoadDesignerItemViewModel(designerbase);
}
public virtual bool InitData()
public virtual bool Verify()
{
return true;
}