为线的动画做扩展准备

This commit is contained in:
艾竹
2023-04-29 15:29:22 +08:00
parent 7d8b19e4e0
commit f4268b9fc2
23 changed files with 397 additions and 120 deletions

View File

@@ -62,7 +62,7 @@ namespace AIStudio.Wpf.DiagramDesigner
this.Root = root ?? sourceConnectorInfo.Root;
if (sinkConnectorInfo is FullyCreatedConnectorInfo sink && sink.DataItem.ShowArrow == false)
{
this.ShapeViewModel.SinkMarker = new LinkMarker("", 10, 10, ArrowPathStyle.None, ArrowSizeStyle.Middle);
this.ShapeViewModel.SinkMarker = new SharpPath("", 10, 10, ArrowPathStyle.None, ArrowSizeStyle.Middle);
}
var routetype = TypeHelper.GetType(RouterMode);
Router = routetype != null ? (System.Activator.CreateInstance(routetype) as IRouter) : new RouterNormal();

View File

@@ -14,6 +14,7 @@ namespace AIStudio.Wpf.DiagramDesigner.ViewModels.BaseViewModel
ColorViewModel = new ColorViewModel();
FontViewModel = new FontViewModel();
ShapeViewModel = new ShapeViewModel();
AnimationViewModel= new AnimationViewModel();
LockObjectViewModel = new LockObjectViewModel();
_drawModeViewModel = new DrawModeViewModel();
@@ -25,6 +26,7 @@ namespace AIStudio.Wpf.DiagramDesigner.ViewModels.BaseViewModel
SetOldValue(ColorViewModel, nameof(ColorViewModel));
SetOldValue(FontViewModel, nameof(FontViewModel));
SetOldValue(ShapeViewModel, nameof(ShapeViewModel));
SetOldValue(AnimationViewModel, nameof(AnimationViewModel));
SetOldValue(LockObjectViewModel, nameof(LockObjectViewModel));
}
@@ -51,6 +53,12 @@ namespace AIStudio.Wpf.DiagramDesigner.ViewModels.BaseViewModel
return CopyHelper.Mapper(viewModel);
}
public IAnimationViewModel CopyDefaultAnimationViewModel()
{
var viewModel = GetOldValue<AnimationViewModel>(nameof(AnimationViewModel));
return CopyHelper.Mapper(viewModel);
}
private IColorViewModel _colorViewModel;
public IColorViewModel ColorViewModel
{
@@ -90,6 +98,19 @@ namespace AIStudio.Wpf.DiagramDesigner.ViewModels.BaseViewModel
}
}
private IAnimationViewModel _animationViewModel;
public IAnimationViewModel AnimationViewModel
{
get
{
return _animationViewModel;
}
set
{
SetProperty(ref _animationViewModel, value);
}
}
private IDrawModeViewModel _drawModeViewModel;
public IDrawModeViewModel DrawModeViewModel
{
@@ -147,6 +168,7 @@ namespace AIStudio.Wpf.DiagramDesigner.ViewModels.BaseViewModel
ColorViewModel = GetOldValue<ColorViewModel>(nameof(ColorViewModel));
FontViewModel = GetOldValue<FontViewModel>(nameof(FontViewModel));
ShapeViewModel = GetOldValue<ShapeViewModel>(nameof(ShapeViewModel));
AnimationViewModel = GetOldValue<AnimationViewModel>(nameof(AnimationViewModel));
LockObjectViewModel = GetOldValue<LockObjectViewModel>(nameof(LockObjectViewModel));
}
else
@@ -154,6 +176,7 @@ namespace AIStudio.Wpf.DiagramDesigner.ViewModels.BaseViewModel
ColorViewModel = _selectedItem.ColorViewModel;
FontViewModel = _selectedItem.FontViewModel;
ShapeViewModel = _selectedItem.ShapeViewModel;
AnimationViewModel = _selectedItem.AnimationViewModel;
LockObjectViewModel = _selectedItem.LockObjectViewModel;
}
}

View File

@@ -87,6 +87,11 @@ namespace AIStudio.Wpf.DiagramDesigner
get; set;
}
public IAnimationViewModel AnimationViewModel
{
get; set;
}
private PageSizeType _pageSizeType = PageSizeType.A4;
public PageSizeType PageSizeType
{
@@ -2971,6 +2976,28 @@ namespace AIStudio.Wpf.DiagramDesigner
}
}
public void SetAnimation(IAnimationViewModel animationViewModel, string propertyName, List<SelectableDesignerItemViewModelBase> items)
{
if (items.Any())
{
Dictionary<SelectableDesignerItemViewModelBase, object> infos = items.ToDictionary(p => p, p => p.AnimationViewModel.GetPropertyValue(propertyName));
DoCommandManager.DoNewCommand(this.ToString(),
() => {
var value = animationViewModel.GetPropertyValue(propertyName);
foreach (var item in items)
{
item.AnimationViewModel.SetPropertyValue(propertyName, value);
}
},
() => {
foreach (var item in infos)
{
item.Key.AnimationViewModel.SetPropertyValue(propertyName, item.Value);
}
});
}
}
public void SetQuickItem(IQuickThemeViewModel quickThemeViewModel, string propertyName, List<SelectableDesignerItemViewModelBase> items)
{
if (propertyName == nameof(QuickTheme) && quickThemeViewModel.QuickTheme != null)
@@ -2979,19 +3006,19 @@ namespace AIStudio.Wpf.DiagramDesigner
{
Dictionary<SelectableDesignerItemViewModelBase, Tuple<object, object, object, object>> infos
= items.ToDictionary(p => p, p => new Tuple<object, object, object, object>(
p.FontViewModel.GetPropertyValue("FontColor"),
p.FontViewModel.GetPropertyValue("Color"),
p.ColorViewModel.GetPropertyValue("FillColor"),
p.ColorViewModel.GetPropertyValue("LineColor"),
p.ColorViewModel.GetPropertyValue("LineWidth")));
DoCommandManager.DoNewCommand(this.ToString(),
() => {
var value1 = quickThemeViewModel.QuickTheme.FontViewModel.GetPropertyValue("FontColor");
var value1 = quickThemeViewModel.QuickTheme.FontViewModel.GetPropertyValue("Color");
var value2 = quickThemeViewModel.QuickTheme.ColorViewModel.GetPropertyValue("FillColor");
var value3 = quickThemeViewModel.QuickTheme.ColorViewModel.GetPropertyValue("LineColor");
var value4 = quickThemeViewModel.QuickTheme.ColorViewModel.GetPropertyValue("LineWidth");
foreach (var item in items)
{
item.FontViewModel.SetPropertyValue("FontColor", value1);
item.FontViewModel.SetPropertyValue("Color", value1);
item.ColorViewModel.SetPropertyValue("FillColor", value2);
item.ColorViewModel.SetPropertyValue("LineColor", value3);
item.ColorViewModel.SetPropertyValue("LineWidth", value4);
@@ -3000,7 +3027,7 @@ namespace AIStudio.Wpf.DiagramDesigner
() => {
foreach (var item in infos)
{
item.Key.FontViewModel.SetPropertyValue("FontColor", item.Value.Item1);
item.Key.FontViewModel.SetPropertyValue("Color", item.Value.Item1);
item.Key.ColorViewModel.SetPropertyValue("FillColor", item.Value.Item2);
item.Key.ColorViewModel.SetPropertyValue("LineColor", item.Value.Item3);
item.Key.ColorViewModel.SetPropertyValue("LineWidth", item.Value.Item4);

View File

@@ -102,6 +102,15 @@ namespace AIStudio.Wpf.DiagramDesigner
this.ShapeViewModel = _service.CopyDefaultShapeViewModel();
}
if (Root?.AnimationViewModel != null)
{
this.AnimationViewModel = CopyHelper.Mapper(Root.AnimationViewModel);
}
else
{
this.AnimationViewModel = _service.CopyDefaultAnimationViewModel();
}
LockObjectViewModel = new LockObjectViewModel();
if (initNew)
@@ -130,6 +139,7 @@ namespace AIStudio.Wpf.DiagramDesigner
ColorViewModel = CopyHelper.Mapper(designerbase.ColorItem);
FontViewModel = CopyHelper.Mapper<FontViewModel, FontItem>(designerbase.FontItem);
ShapeViewModel = CopyHelper.Mapper(designerbase.SharpItem);
AnimationViewModel = CopyHelper.Mapper(designerbase.AnimationItem);
}
public bool IsLoaded
@@ -367,6 +377,27 @@ namespace AIStudio.Wpf.DiagramDesigner
}
}
private IAnimationViewModel _animationViewModel;
public IAnimationViewModel AnimationViewModel
{
get
{
return _animationViewModel;
}
set
{
if (_animationViewModel != null)
{
_animationViewModel.PropertyChanged -= AnimationViewModel_PropertyChanged;
}
SetProperty(ref _animationViewModel, value);
if (_animationViewModel != null)
{
_animationViewModel.PropertyChanged += AnimationViewModel_PropertyChanged;
}
}
}
public ILockObjectViewModel LockObjectViewModel
{
get; set;
@@ -459,6 +490,14 @@ namespace AIStudio.Wpf.DiagramDesigner
RaisePropertyChanged(sender, e);
}
protected void AnimationViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
if (IsLoaded == false) { return; }
RaisePropertyChanged(sender, e);
}
public override string ToString()
{
return $"{Id}-{Name}-{Text}";