ReDo Undo Item ItemWidth 和 Angle 等工具栏设置完成

This commit is contained in:
艾竹
2023-04-09 12:38:57 +08:00
parent 2ef5b7a1ed
commit fae7826577
16 changed files with 487 additions and 464 deletions

View File

@@ -2755,7 +2755,7 @@ namespace AIStudio.Wpf.DiagramDesigner
() => {
foreach (DesignerItemViewModelBase groupRoot in groups)
{
Remove(groupRoot);
Remove(groupRoot);
}
foreach (var item in items)
{
@@ -2774,7 +2774,7 @@ namespace AIStudio.Wpf.DiagramDesigner
item.Key.ZIndex = item.Value.Item2;
}
});
}
private bool BelongToSameGroup(IGroupable item1, IGroupable item2)
@@ -2786,6 +2786,135 @@ namespace AIStudio.Wpf.DiagramDesigner
}
#endregion
#region
public void SetPropertyValue(SelectableDesignerItemViewModelBase selectable, string propertyName, List<SelectableDesignerItemViewModelBase> items)
{
if (items.Any())
{
Dictionary<SelectableDesignerItemViewModelBase, object> infos = items.ToDictionary(p => p, p => p.GetPropertyValue(propertyName));
DoCommandManager.DoNewCommand(this.ToString(),
() => {
var value = selectable.GetPropertyValue(propertyName);
foreach (var item in items)
{
item.SetPropertyValue(propertyName, value);
}
},
() => {
foreach (var item in infos)
{
item.Key.SetPropertyValue(propertyName, item.Value);
}
});
}
}
public void SetFont(IFontViewModel fontViewModel, string propertyName, List<SelectableDesignerItemViewModelBase> items)
{
if (items.Any())
{
Dictionary<SelectableDesignerItemViewModelBase, IFontViewModel> infos = items.ToDictionary(p => p, p => CopyHelper.Mapper(p.FontViewModel));
DoCommandManager.DoNewCommand(this.ToString(),
() => {
foreach (var item in items)
{
CopyHelper.CopyPropertyValue(fontViewModel, item.FontViewModel, propertyName);
}
},
() => {
foreach (var item in infos)
{
CopyHelper.CopyPropertyValue(item.Value, item.Key.FontViewModel, propertyName);
}
});
}
}
public void SetColor(IColorViewModel colorViewModel, string propertyName, List<SelectableDesignerItemViewModelBase> items)
{
if (items.Any())
{
Dictionary<SelectableDesignerItemViewModelBase, IColorViewModel> infos = items.ToDictionary(p => p, p => CopyHelper.Mapper(p.ColorViewModel));
DoCommandManager.DoNewCommand(this.ToString(),
() => {
foreach (var item in items)
{
CopyHelper.CopyPropertyValue(colorViewModel, item.ColorViewModel, propertyName);
}
},
() => {
foreach (var item in infos)
{
CopyHelper.CopyPropertyValue(item.Value, item.Key.ColorViewModel, propertyName);
}
});
}
}
public void SetSharp(IShapeViewModel shapeViewModel, string propertyName, List<SelectableDesignerItemViewModelBase> items)
{
if (items.Any())
{
Dictionary<SelectableDesignerItemViewModelBase, IShapeViewModel> infos = items.ToDictionary(p => p, p => CopyHelper.Mapper(p.ShapeViewModel));
DoCommandManager.DoNewCommand(this.ToString(),
() => {
foreach (var item in items)
{
CopyHelper.CopyPropertyValue(shapeViewModel, item.ShapeViewModel, propertyName);
}
},
() => {
foreach (var item in infos)
{
CopyHelper.CopyPropertyValue(item.Value, item.Key.ShapeViewModel, propertyName);
}
});
}
}
public void SetQuickItem(IQuickThemeViewModel quickThemeViewModel, string propertyName, List<SelectableDesignerItemViewModelBase> items)
{
if (propertyName == nameof(QuickTheme) && quickThemeViewModel.QuickTheme != null)
{
if (items.Any())
{
Dictionary<SelectableDesignerItemViewModelBase, Tuple<IFontViewModel, IColorViewModel>> infos = items.ToDictionary(p => p, p => new Tuple<IFontViewModel, IColorViewModel>(CopyHelper.Mapper(p.FontViewModel), CopyHelper.Mapper(p.ColorViewModel)));
DoCommandManager.DoNewCommand(this.ToString(),
() => {
foreach (var item in items)
{
CopyHelper.CopyPropertyValue(quickThemeViewModel.QuickTheme.FontViewModel, item.FontViewModel, "FontColor");
CopyHelper.CopyPropertyValue(quickThemeViewModel.QuickTheme.ColorViewModel, item.ColorViewModel, "FillColor");
CopyHelper.CopyPropertyValue(quickThemeViewModel.QuickTheme.ColorViewModel, item.ColorViewModel, "LineColor");
CopyHelper.CopyPropertyValue(quickThemeViewModel.QuickTheme.ColorViewModel, item.ColorViewModel, "LineWidth");
}
},
() => {
foreach (var item in infos)
{
CopyHelper.CopyPropertyValue(item.Value.Item1, item.Key.FontViewModel, "FontColor");
CopyHelper.CopyPropertyValue(item.Value.Item2, item.Key.ColorViewModel, "FillColor");
CopyHelper.CopyPropertyValue(item.Value.Item2, item.Key.ColorViewModel, "LineColor");
CopyHelper.CopyPropertyValue(item.Value.Item2, item.Key.ColorViewModel, "LineWidth");
}
});
}
quickThemeViewModel.QuickTheme = null;
}
}
public void LockAction(LockObject lockObject, string propertyName, List<SelectableDesignerItemViewModelBase> items)
{
foreach (var item in items)
{
item.LockObjectViewModel.SetValue(lockObject);
}
}
#endregion
#region
public bool ExecuteShortcut(KeyEventArgs e)
{