This commit is contained in:
艾竹
2023-03-25 11:59:31 +08:00
parent 8a2c742ec4
commit b36bd4b228
35 changed files with 344 additions and 296 deletions

View File

@@ -76,6 +76,11 @@ namespace AIStudio.Wpf.DiagramDesigner
AddLabelCommand = new SimpleCommand(Command_Enable, para => AddLabel());
}
protected override void InitNew()
{
base.InitNew();
}
protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
{
base.LoadDesignerItemViewModel(designerbase);

View File

@@ -36,10 +36,13 @@ namespace AIStudio.Wpf.DiagramDesigner
return new ConnectorInfoItemBase(this);
}
protected override void Init(IDiagramViewModel root)
protected override void Init(IDiagramViewModel root, bool initNew)
{
base.Init(root, initNew);
}
protected override void InitNew()
{
base.Init(root);
ColorViewModel = new ColorViewModel()
{
LineColor = new ColorObject() { Color = Color.FromArgb(0xAA, 0x00, 0x00, 0x80) },

View File

@@ -36,17 +36,20 @@ namespace AIStudio.Wpf.DiagramDesigner
return new ConnectorLabelItem(this);
}
protected override void Init(IDiagramViewModel root)
protected override void Init(IDiagramViewModel root, bool initNew)
{
base.Init(root);
ConnectorWidth = 30;
ConnectorHeight = 30;
base.Init(root, initNew);
DeleteLabelCommand = new SimpleCommand(Command_Enable, DeleteLabel);
EditCommand = new SimpleCommand(Command_Enable, ExecuteEditCommand);
}
protected override void InitNew()
{
ConnectorWidth = 30;
ConnectorHeight = 30;
}
protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
{
base.LoadDesignerItemViewModel(designerbase);

View File

@@ -48,9 +48,13 @@ namespace AIStudio.Wpf.DiagramDesigner
return new ConnectorPointItem(this);
}
protected override void Init(IDiagramViewModel root)
protected override void Init(IDiagramViewModel root, bool initNew)
{
base.Init(root, initNew);
}
protected override void InitNew()
{
base.Init(root);
ColorViewModel = new ColorViewModel()
{
LineColor = new ColorObject() { Color = Color.FromArgb(0xAA, 0x00, 0x00, 0x80) },

View File

@@ -33,9 +33,9 @@ namespace AIStudio.Wpf.DiagramDesigner
return new ConnectorVertexItem(this);
}
protected override void Init(IDiagramViewModel root)
protected override void Init(IDiagramViewModel root, bool initNew)
{
base.Init(root);
base.Init(root, initNew);
DeleteVertexCommand = new SimpleCommand(Command_Enable, DeleteVertex);
}

View File

@@ -52,9 +52,9 @@ namespace AIStudio.Wpf.DiagramDesigner
return new FullyCreatedConnectorInfoItem(this);
}
protected override void Init(IDiagramViewModel root)
protected override void Init(IDiagramViewModel root, bool initNew)
{
base.Init(root);
base.Init(root, initNew);
menuOptions = new List<CinchMenuItem>();
MenuItemCommand = new SimpleCommand(Command_Enable, ExecuteMenuItemCommand);
@@ -62,6 +62,11 @@ namespace AIStudio.Wpf.DiagramDesigner
}
protected override void InitNew()
{
base.InitNew();
}
protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
{
base.LoadDesignerItemViewModel(designerbase);

View File

@@ -38,11 +38,12 @@ namespace AIStudio.Wpf.DiagramDesigner
return new DesignerItemBase(this);
}
protected override void Init(IDiagramViewModel root)
protected override void InitNew()
{
base.Init(root);
InitConnector();
connectors.Add(new FullyCreatedConnectorInfo(this.Root, this, ConnectorOrientation.Top));
connectors.Add(new FullyCreatedConnectorInfo(this.Root, this, ConnectorOrientation.Bottom));
connectors.Add(new FullyCreatedConnectorInfo(this.Root, this, ConnectorOrientation.Left));
connectors.Add(new FullyCreatedConnectorInfo(this.Root, this, ConnectorOrientation.Right));
}
protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
@@ -61,17 +62,13 @@ namespace AIStudio.Wpf.DiagramDesigner
this.Icon = designer.Icon;
this.CornerRadius = designer.CornerRadius;
this.BorderThickness = designer.BorderThickness;
foreach (var connector in designer.Connectors)
{
FullyCreatedConnectorInfo fullyCreatedConnectorInfo = new FullyCreatedConnectorInfo(this.Root, this, connector);
AddConnector(fullyCreatedConnectorInfo);
}
}
}
protected virtual void InitConnector()
{
connectors.Add(new FullyCreatedConnectorInfo(this.Root, this, ConnectorOrientation.Top));
connectors.Add(new FullyCreatedConnectorInfo(this.Root, this, ConnectorOrientation.Bottom));
connectors.Add(new FullyCreatedConnectorInfo(this.Root, this, ConnectorOrientation.Left));
connectors.Add(new FullyCreatedConnectorInfo(this.Root, this, ConnectorOrientation.Right));
}
#region
public FullyCreatedConnectorInfo FirstConnector

View File

@@ -1493,17 +1493,9 @@ namespace AIStudio.Wpf.DiagramDesigner
{
if (!selectedConnections.Contains(connection))
{
DesignerItemViewModelBase sourceItem = (from item in selectedDesignerItems
where item.Id == connection.SourceConnectorInfo.DataItem.Id
select item).FirstOrDefault();
DesignerItemViewModelBase sinkItem = (from item in selectedDesignerItems
where item.Id == connection.SinkConnectorInfoFully?.DataItem?.Id
select item).FirstOrDefault();
if (sourceItem != null &&
sinkItem != null &&
BelongToSameGroup(sourceItem, sinkItem))
DesignerItemViewModelBase sourceItem = selectedDesignerItems.FirstOrDefault(p => p.Id == connection.SourceConnectorInfo.DataItem.Id);
DesignerItemViewModelBase sinkItem = selectedDesignerItems.FirstOrDefault(p => p.Id == connection.SinkConnectorInfoFully?.DataItem?.Id);
if (sourceItem != null && sinkItem != null && BelongToSameGroup(sourceItem, sinkItem))
{
selectedConnections.Add(connection);
}
@@ -1600,11 +1592,11 @@ namespace AIStudio.Wpf.DiagramDesigner
if (mappingOldToNewIDs.ContainsKey(item.ParentId))
item.ParentId = mappingOldToNewIDs[item.ParentId];
}
}
items.AddRange(connectors);
FixConnection(items);
}
items.AddRange(connectors);
DirectAddItemCommand.Execute(items);
FixOtherInfo(items);
}
catch (Exception e)
{
@@ -1618,7 +1610,7 @@ namespace AIStudio.Wpf.DiagramDesigner
}
}
protected virtual void FixConnection(List<SelectableDesignerItemViewModelBase> items)
protected virtual void FixOtherInfo(List<SelectableDesignerItemViewModelBase> items)
{
}
@@ -2521,10 +2513,7 @@ namespace AIStudio.Wpf.DiagramDesigner
foreach (DesignerItemViewModelBase groupRoot in groups)
{
var children = from child in SelectedItems.OfType<DesignerItemViewModelBase>()
where child.ParentId == groupRoot.Id
select child;
var children = SelectedItems.OfType<DesignerItemViewModelBase>().Where(p => p.ParentId == groupRoot.Id);
foreach (DesignerItemViewModelBase child in children)
child.ParentId = Guid.Empty;

View File

@@ -36,17 +36,17 @@ namespace AIStudio.Wpf.DiagramDesigner
}
protected override void Init(IDiagramViewModel root)
protected override void Init(IDiagramViewModel root, bool initNew)
{
base.Init(root);
base.Init(root, initNew);
this.IsGroup = true;
this.IsHitTestVisible = true;
}
protected override void InitConnector()
protected override void InitNew()
{
this.ClearConnectors();
}
protected override void ExecuteEditCommand(object param)

View File

@@ -42,14 +42,19 @@ namespace AIStudio.Wpf.DiagramDesigner
}
protected override void Init(IDiagramViewModel root)
protected override void Init(IDiagramViewModel root, bool initNew)
{
base.Init(root);
base.Init(root, initNew);
SelectItemCommand = new SimpleCommand(Command_Enable, ExecuteSelectItemCommand);
EditCommand = new SimpleCommand(Command_Enable, ExecuteEditCommand);
}
protected override void InitNew()
{
base.InitNew();
}
protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
{
base.LoadDesignerItemViewModel(designerbase);

View File

@@ -29,20 +29,20 @@ namespace AIStudio.Wpf.DiagramDesigner
public SelectableViewModelBase(IDiagramViewModel root)
{
Init(root);
Init(root, true);
(FontViewModel as FontViewModel).PropertyChanged += FontViewModel_PropertyChanged;
}
public SelectableViewModelBase(IDiagramViewModel root, SelectableItemBase designer)
{
Init(root);
Init(root, false);
LoadDesignerItemViewModel(designer);
(FontViewModel as FontViewModel).PropertyChanged += FontViewModel_PropertyChanged;
}
public SelectableViewModelBase(IDiagramViewModel root, SerializableItem serializableItem, string serializableType)
{
Init(root);
Init(root, false);
SelectableItemBase obj = SerializeHelper.DeserializeObject(serializableItem.SerializableTypeName, serializableItem.SerializableString, serializableType);
LoadDesignerItemViewModel(obj);
(FontViewModel as FontViewModel).PropertyChanged += FontViewModel_PropertyChanged;
@@ -66,7 +66,7 @@ namespace AIStudio.Wpf.DiagramDesigner
return null;
}
protected virtual void Init(IDiagramViewModel root)
protected virtual void Init(IDiagramViewModel root, bool initNew)
{
Root = root;
@@ -98,6 +98,16 @@ namespace AIStudio.Wpf.DiagramDesigner
}
LockObjectViewModel = new LockObjectViewModel();
if (initNew)
{
InitNew();
}
}
protected virtual void InitNew()
{
}
protected virtual void LoadDesignerItemViewModel(SelectableItemBase designerbase)
@@ -158,7 +168,7 @@ namespace AIStudio.Wpf.DiagramDesigner
set
{
if (SetProperty(ref _isSelected, value))
{
{
//如果没有文字,失去焦点自动清除
if (_isSelected == false && string.IsNullOrEmpty(Text))
{
@@ -336,7 +346,7 @@ namespace AIStudio.Wpf.DiagramDesigner
protected virtual void ClearText()
{
}
public virtual void ClearSelected()
@@ -362,6 +372,11 @@ namespace AIStudio.Wpf.DiagramDesigner
}
}
public override string ToString()
{
return $"{Id}-{Text}";
}
public virtual void Dispose()
{
}