把底层再分割一下

This commit is contained in:
艾竹
2023-01-24 09:02:40 +08:00
parent 2b4662ed37
commit f39a57b3e5
26 changed files with 283 additions and 325 deletions

View File

@@ -161,7 +161,7 @@ DesignerItems.OfType<DesignerItemBase>()
[XmlArray] [XmlArray]
public List<ConnectionItem> Connections { get; set; } public List<ConnectionItem> Connections { get; set; }
public void AddItems(IEnumerable<SelectableViewModelBase> selectedDesignerItems) public void AddItems(IEnumerable<SelectableDesignerItemViewModelBase> selectedDesignerItems)
{ {
var items = selectedDesignerItems.OfType<DesignerItemViewModelBase>().Select(p => p.ToXmlObject()); var items = selectedDesignerItems.OfType<DesignerItemViewModelBase>().Select(p => p.ToXmlObject());
foreach (var item in items) foreach (var item in items)

View File

@@ -177,7 +177,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels
#endregion #endregion
protected virtual bool AddVerify(SelectableViewModelBase arg) protected virtual bool AddVerify(SelectableDesignerItemViewModelBase arg)
{ {
return true; return true;
} }
@@ -274,11 +274,6 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels
FullyCreatedConnectorInfo sinkConnectorInfo = GetFullConnectorInfo(connection.Id, sinkItem, sinkConnectorOrientation, connection.SinkXRatio, connection.SinkYRatio, connection.SinkInnerPoint); FullyCreatedConnectorInfo sinkConnectorInfo = GetFullConnectorInfo(connection.Id, sinkItem, sinkConnectorOrientation, connection.SinkXRatio, connection.SinkYRatio, connection.SinkInnerPoint);
ConnectorViewModel connectionVM = new ConnectorViewModel(viewModel, sourceConnectorInfo, sinkConnectorInfo, connection); ConnectorViewModel connectionVM = new ConnectorViewModel(viewModel, sourceConnectorInfo, sinkConnectorInfo, connection);
DesignerItemViewModelBase textItem = viewModel.Items.OfType<DesignerItemViewModelBase>().FirstOrDefault(x => x.ParentId == connection.Id);
if (textItem != null)
{
connectionVM.OutTextItem = textItem;
}
viewModel.Items.Add(connectionVM); viewModel.Items.Add(connectionVM);
} }
@@ -402,7 +397,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels
return null; return null;
} }
private bool ItemsToDeleteHasConnector(List<SelectableViewModelBase> itemsToRemove, ConnectorInfoBase connector) private bool ItemsToDeleteHasConnector(List<SelectableDesignerItemViewModelBase> itemsToRemove, ConnectorInfoBase connector)
{ {
if (connector is FullyCreatedConnectorInfo fully) if (connector is FullyCreatedConnectorInfo fully)
{ {
@@ -413,7 +408,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels
} }
#region #region
public void SetPropertyValue(SelectableViewModelBase selectable, string propertyName) public void SetPropertyValue(SelectableDesignerItemViewModelBase selectable, string propertyName)
{ {
foreach (var item in DiagramViewModel.SelectedItems) foreach (var item in DiagramViewModel.SelectedItems)
{ {

View File

@@ -119,7 +119,7 @@ namespace AIStudio.Wpf.Logical
RaisePropertyChanged("Items"); RaisePropertyChanged("Items");
} }
protected override bool AddVerify(SelectableViewModelBase arg) protected override bool AddVerify(SelectableDesignerItemViewModelBase arg)
{ {
if (base.AddVerify(arg) == false) if (base.AddVerify(arg) == false)
return false; return false;

View File

@@ -155,7 +155,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels
} }
} }
public SelectableViewModelBase SelectedItem public SelectableDesignerItemViewModelBase SelectedItem
{ {
get get
{ {

View File

@@ -21,7 +21,7 @@ namespace AIStudio.Wpf.DiagramDesigner.Test.ViewModels
} }
public SelectableViewModelBase SelectedItem public SelectableDesignerItemViewModelBase SelectedItem
{ {
get get
{ {

View File

@@ -227,9 +227,9 @@ namespace AIStudio.Wpf.DiagramDesigner
Rect rubberBand = new Rect(startPoint.Value, endPoint.Value); Rect rubberBand = new Rect(startPoint.Value, endPoint.Value);
ItemsControl itemsControl = GetParent<ItemsControl>(typeof(ItemsControl), _designerCanvas); ItemsControl itemsControl = GetParent<ItemsControl>(typeof(ItemsControl), _designerCanvas);
foreach (SelectableViewModelBase item in vm.Items) foreach (SelectableDesignerItemViewModelBase item in vm.Items)
{ {
if (item is SelectableViewModelBase) if (item is SelectableDesignerItemViewModelBase)
{ {
DependencyObject container = itemsControl.ItemContainerGenerator.ContainerFromItem(item); DependencyObject container = itemsControl.ItemContainerGenerator.ContainerFromItem(item);

View File

@@ -1,25 +0,0 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
namespace AIStudio.Wpf.DiagramDesigner
{
public static class ConnectorStyleProps
{
public static readonly DependencyProperty StyleProperty =
DependencyProperty.RegisterAttached("Style", typeof(Style), typeof(ConnectorStyleProps),
new FrameworkPropertyMetadata(default(Style)));
public static Style GetStyle(DependencyObject d)
{
return (Style)d.GetValue(StyleProperty);
}
public static void SetStyle(DependencyObject d, Style value)
{
d.SetValue(StyleProperty, value);
}
}
}

View File

@@ -16,7 +16,7 @@ namespace AIStudio.Wpf.DiagramDesigner.Controls
/// BindingWidthAndHeight Dependency Property /// BindingWidthAndHeight Dependency Property
/// </summary> /// </summary>
public static readonly DependencyProperty ResizeModeProperty = public static readonly DependencyProperty ResizeModeProperty =
DependencyProperty.Register("ResizeMode", typeof(ResizeMode), typeof(BorderResizeThumb), DependencyProperty.Register(nameof(ResizeMode), typeof(ResizeMode), typeof(BorderResizeThumb),
new FrameworkPropertyMetadata(ResizeMode.Size)); new FrameworkPropertyMetadata(ResizeMode.Size));
/// <summary> /// <summary>
@@ -37,7 +37,7 @@ namespace AIStudio.Wpf.DiagramDesigner.Controls
/// BindingWidthAndHeight Dependency Property /// BindingWidthAndHeight Dependency Property
/// </summary> /// </summary>
public static readonly DependencyProperty ResizeElementProperty = public static readonly DependencyProperty ResizeElementProperty =
DependencyProperty.Register("ResizeElement", typeof(FrameworkElement), typeof(BorderResizeThumb), DependencyProperty.Register(nameof(ResizeElement), typeof(FrameworkElement), typeof(BorderResizeThumb),
new FrameworkPropertyMetadata(null)); new FrameworkPropertyMetadata(null));
/// <summary> /// <summary>

View File

@@ -57,7 +57,7 @@ namespace AIStudio.Wpf.DiagramDesigner
#region GridCellSize #region GridCellSize
public static readonly DependencyProperty GridCellSizeProperty = public static readonly DependencyProperty GridCellSizeProperty =
DependencyProperty.Register("GridCellSize", DependencyProperty.Register(nameof(GridCellSize),
typeof(Size), typeof(Size),
typeof(DesignerCanvas), typeof(DesignerCanvas),
new FrameworkPropertyMetadata(new Size(50, 50), FrameworkPropertyMetadataOptions.AffectsRender)); new FrameworkPropertyMetadata(new Size(50, 50), FrameworkPropertyMetadataOptions.AffectsRender));
@@ -73,7 +73,7 @@ namespace AIStudio.Wpf.DiagramDesigner
#region ShowGrid #region ShowGrid
public static readonly DependencyProperty ShowGridProperty = public static readonly DependencyProperty ShowGridProperty =
DependencyProperty.Register("ShowGrid", DependencyProperty.Register(nameof(ShowGrid),
typeof(bool), typeof(bool),
typeof(DesignerCanvas), typeof(DesignerCanvas),
new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender)); new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
@@ -89,7 +89,7 @@ namespace AIStudio.Wpf.DiagramDesigner
#region GridColor #region GridColor
public static readonly DependencyProperty GridColorProperty = public static readonly DependencyProperty GridColorProperty =
DependencyProperty.Register("GridColor", DependencyProperty.Register(nameof(GridColor),
typeof(Color), typeof(Color),
typeof(DesignerCanvas), typeof(DesignerCanvas),
new FrameworkPropertyMetadata(Colors.LightGray, FrameworkPropertyMetadataOptions.AffectsRender)); new FrameworkPropertyMetadata(Colors.LightGray, FrameworkPropertyMetadataOptions.AffectsRender));
@@ -105,7 +105,7 @@ namespace AIStudio.Wpf.DiagramDesigner
#region GridMargin mm #region GridMargin mm
public static readonly DependencyProperty GridMarginProperty = public static readonly DependencyProperty GridMarginProperty =
DependencyProperty.Register("GridMargin", DependencyProperty.Register(nameof(GridMargin),
typeof(double), typeof(double),
typeof(DesignerCanvas), typeof(DesignerCanvas),
new FrameworkPropertyMetadata(28d, FrameworkPropertyMetadataOptions.AffectsRender)); new FrameworkPropertyMetadata(28d, FrameworkPropertyMetadataOptions.AffectsRender));
@@ -169,7 +169,7 @@ namespace AIStudio.Wpf.DiagramDesigner
{ {
StreamResourceInfo sri = Application.GetResourceStream(new Uri("pack://application:,,,/AIStudio.Wpf.DiagramDesigner;component/Images/FormatPainter.cur", UriKind.RelativeOrAbsolute)); StreamResourceInfo sri = Application.GetResourceStream(new Uri("pack://application:,,,/AIStudio.Wpf.DiagramDesigner;component/Images/FormatPainter.cur", UriKind.RelativeOrAbsolute));
this.Cursor = new Cursor(sri.Stream); this.Cursor = new Cursor(sri.Stream);
foreach (SelectableViewModelBase item in _viewModel.Items) foreach (SelectableDesignerItemViewModelBase item in _viewModel.Items)
{ {
item.IsHitTestVisible = false; item.IsHitTestVisible = false;
} }
@@ -178,7 +178,7 @@ namespace AIStudio.Wpf.DiagramDesigner
private void EnterMove() private void EnterMove()
{ {
this.Cursor = Cursors.SizeAll; this.Cursor = Cursors.SizeAll;
foreach (SelectableViewModelBase item in _viewModel.Items) foreach (SelectableDesignerItemViewModelBase item in _viewModel.Items)
{ {
item.IsHitTestVisible = false; item.IsHitTestVisible = false;
} }
@@ -187,7 +187,7 @@ namespace AIStudio.Wpf.DiagramDesigner
private void ExitCursor() private void ExitCursor()
{ {
this.Cursor = Cursors.Arrow; this.Cursor = Cursors.Arrow;
foreach (SelectableViewModelBase item in _viewModel.Items) foreach (SelectableDesignerItemViewModelBase item in _viewModel.Items)
{ {
item.IsHitTestVisible = true; item.IsHitTestVisible = true;
} }
@@ -195,7 +195,7 @@ namespace AIStudio.Wpf.DiagramDesigner
} }
#endregion #endregion
private void Format(SelectableViewModelBase source, SelectableViewModelBase target) private void Format(SelectableDesignerItemViewModelBase source, SelectableDesignerItemViewModelBase target)
{ {
CopyHelper.CopyPropertyValue(source.ColorViewModel, target.ColorViewModel); CopyHelper.CopyPropertyValue(source.ColorViewModel, target.ColorViewModel);
CopyHelper.CopyPropertyValue(source.FontViewModel, target.FontViewModel); CopyHelper.CopyPropertyValue(source.FontViewModel, target.FontViewModel);
@@ -253,7 +253,7 @@ namespace AIStudio.Wpf.DiagramDesigner
if (_service.DrawModeViewModel.CursorMode == CursorMode.Format) if (_service.DrawModeViewModel.CursorMode == CursorMode.Format)
{ {
var element = (e.OriginalSource as FrameworkElement); var element = (e.OriginalSource as FrameworkElement);
if (element.DataContext is SelectableViewModelBase target) if (element.DataContext is SelectableDesignerItemViewModelBase target)
{ {
Format(_viewModel.SelectedItems.FirstOrDefault(), target); Format(_viewModel.SelectedItems.FirstOrDefault(), target);
return; return;

View File

@@ -18,16 +18,16 @@ namespace AIStudio.Wpf.DiagramDesigner.Controls
base.DragCompleted += DragThumb_DragCompleted; base.DragCompleted += DragThumb_DragCompleted;
} }
private List<SelectableViewModelBase> designerItems; private List<SelectableDesignerItemViewModelBase> designerItems;
private void DragThumb_DragStarted(object sender, DragStartedEventArgs e) private void DragThumb_DragStarted(object sender, DragStartedEventArgs e)
{ {
SelectableViewModelBase designerItem = this.DataContext as SelectableViewModelBase; SelectableDesignerItemViewModelBase designerItem = this.DataContext as SelectableDesignerItemViewModelBase;
if (designerItem != null && designerItem.IsSelected) if (designerItem != null && designerItem.IsSelected)
{ {
// we only move DesignerItems // we only move DesignerItems
designerItems = designerItem.SelectedItems.ToList(); designerItems = designerItem.Parent.SelectedItems.ToList();
if (designerItem is ConnectorViewModel connector) if (designerItem is ConnectorViewModel connector)
{ {
designerItems.Add(connector.SourceConnectorInfo.DataItem); designerItems.Add(connector.SourceConnectorInfo.DataItem);
@@ -35,15 +35,11 @@ namespace AIStudio.Wpf.DiagramDesigner.Controls
{ {
designerItems.Add(connector.SinkConnectorInfoFully.DataItem); designerItems.Add(connector.SinkConnectorInfoFully.DataItem);
} }
if (designerItem.OutTextItem != null)
{
designerItems.Remove(designerItem.OutTextItem);//这个自动计算位置
}
} }
if (designerItem is PointDesignerItemViewModel) if (designerItem is PointDesignerItemViewModel)
{ {
designerItems = new List<SelectableViewModelBase> { designerItem }; designerItems = new List<SelectableDesignerItemViewModelBase> { designerItem };
} }
foreach (DesignerItemViewModelBase item in designerItems.OfType<DesignerItemViewModelBase>()) foreach (DesignerItemViewModelBase item in designerItems.OfType<DesignerItemViewModelBase>())

View File

@@ -23,7 +23,7 @@ namespace AIStudio.Wpf.DiagramDesigner.Controls
{ {
#region SelectedObject #region SelectedObject
public static readonly DependencyProperty SelectedObjectProperty = DependencyProperty.Register("SelectedObject", typeof(object), typeof(PropertiesView), new UIPropertyMetadata(null, OnSelectedObjectChanged)); public static readonly DependencyProperty SelectedObjectProperty = DependencyProperty.Register(nameof(SelectedObject), typeof(object), typeof(PropertiesView), new UIPropertyMetadata(null, OnSelectedObjectChanged));
public object SelectedObject public object SelectedObject
{ {
get get
@@ -57,7 +57,7 @@ namespace AIStudio.Wpf.DiagramDesigner.Controls
#endregion //SelectedObject #endregion //SelectedObject
public static readonly DependencyProperty NeedBrowsableProperty = DependencyProperty.Register("NeedBrowsable", typeof(bool), typeof(PropertiesView), new UIPropertyMetadata(true)); public static readonly DependencyProperty NeedBrowsableProperty = DependencyProperty.Register(nameof(NeedBrowsable), typeof(bool), typeof(PropertiesView), new UIPropertyMetadata(true));
public bool NeedBrowsable public bool NeedBrowsable
{ {
get get

View File

@@ -17,7 +17,7 @@ namespace AIStudio.Wpf.DiagramDesigner.Controls
base.DragCompleted += ResizeThumb_DragCompleted; base.DragCompleted += ResizeThumb_DragCompleted;
} }
private List<SelectableViewModelBase> designerItems; private List<SelectableDesignerItemViewModelBase> designerItems;
IDiagramViewModel diagarmViewModel; IDiagramViewModel diagarmViewModel;
private void ResizeThumb_DragStarted(object sender, DragStartedEventArgs e) private void ResizeThumb_DragStarted(object sender, DragStartedEventArgs e)
@@ -26,7 +26,7 @@ namespace AIStudio.Wpf.DiagramDesigner.Controls
diagarmViewModel = designerItem.Parent; diagarmViewModel = designerItem.Parent;
if (designerItem != null && designerItem.IsSelected) if (designerItem != null && designerItem.IsSelected)
{ {
designerItems = designerItem.SelectedItems.ToList(); designerItems = designerItem.Parent.SelectedItems.ToList();
foreach (DesignerItemViewModelBase item in designerItems.OfType<DesignerItemViewModelBase>()) foreach (DesignerItemViewModelBase item in designerItems.OfType<DesignerItemViewModelBase>())
{ {
item.BeginDo = true; item.BeginDo = true;

View File

@@ -16,7 +16,6 @@ namespace AIStudio.Wpf.DiagramDesigner.Controls
private double initialAngle; private double initialAngle;
private Canvas designerCanvas; private Canvas designerCanvas;
private DesignerItemViewModelBase designerItem; private DesignerItemViewModelBase designerItem;
private RotateTransform rotateTransform;
public RotateThumb() public RotateThumb()
{ {
@@ -25,7 +24,7 @@ namespace AIStudio.Wpf.DiagramDesigner.Controls
DragCompleted += RotateThumb_DragCompleted; DragCompleted += RotateThumb_DragCompleted;
} }
private List<SelectableViewModelBase> designerItems; private List<SelectableDesignerItemViewModelBase> designerItems;
private void RotateThumb_DragStarted(object sender, DragStartedEventArgs e) private void RotateThumb_DragStarted(object sender, DragStartedEventArgs e)
{ {
@@ -33,7 +32,7 @@ namespace AIStudio.Wpf.DiagramDesigner.Controls
if (this.designerItem != null) if (this.designerItem != null)
{ {
designerItems = designerItem.SelectedItems.ToList(); designerItems = designerItem.Parent.SelectedItems.ToList();
foreach (DesignerItemViewModelBase item in designerItems.OfType<DesignerItemViewModelBase>()) foreach (DesignerItemViewModelBase item in designerItems.OfType<DesignerItemViewModelBase>())
{ {

View File

@@ -24,14 +24,14 @@ namespace AIStudio.Wpf.DiagramDesigner
} }
public static readonly DependencyProperty ScrollViewerProperty = public static readonly DependencyProperty ScrollViewerProperty =
DependencyProperty.Register("ScrollViewer", typeof(ScrollViewer), typeof(ZoomBox)); DependencyProperty.Register(nameof(ScrollViewer), typeof(ScrollViewer), typeof(ZoomBox));
#endregion #endregion
#region DesignerCanvas #region DesignerCanvas
public static readonly DependencyProperty DesignerCanvasProperty = public static readonly DependencyProperty DesignerCanvasProperty =
DependencyProperty.Register("DesignerCanvas", typeof(DesignerCanvas), typeof(ZoomBox), DependencyProperty.Register(nameof(DesignerCanvas), typeof(DesignerCanvas), typeof(ZoomBox),
new FrameworkPropertyMetadata(null, new FrameworkPropertyMetadata(null,
new PropertyChangedCallback(OnDesignerCanvasChanged))); new PropertyChangedCallback(OnDesignerCanvasChanged)));

View File

@@ -128,7 +128,7 @@ namespace AIStudio.Wpf.DiagramDesigner
/// Identifies the <see cref="CommandParameter" /> dependency property /// Identifies the <see cref="CommandParameter" /> dependency property
/// </summary> /// </summary>
public static readonly DependencyProperty CommandParameterProperty = DependencyProperty.Register( public static readonly DependencyProperty CommandParameterProperty = DependencyProperty.Register(
"CommandParameter", typeof(object), typeof(ControlMouseDoubleClickCommandBehavior), nameof(CommandParameter), typeof(object), typeof(ControlMouseDoubleClickCommandBehavior),
new PropertyMetadata(null, new PropertyMetadata(null,
(s, e) => (s, e) =>
{ {
@@ -165,7 +165,7 @@ namespace AIStudio.Wpf.DiagramDesigner
/// Identifies the <see cref="Command" /> dependency property /// Identifies the <see cref="Command" /> dependency property
/// </summary> /// </summary>
public static readonly DependencyProperty CommandProperty = DependencyProperty.Register( public static readonly DependencyProperty CommandProperty = DependencyProperty.Register(
"Command", typeof(ICommand), typeof(ControlMouseDoubleClickCommandBehavior), nameof(Command), typeof(ICommand), typeof(ControlMouseDoubleClickCommandBehavior),
new PropertyMetadata(null, new PropertyMetadata(null,
(s, e) => OnCommandChanged(s as ControlMouseDoubleClickCommandBehavior, e))); (s, e) => OnCommandChanged(s as ControlMouseDoubleClickCommandBehavior, e)));

View File

@@ -125,7 +125,7 @@ namespace AIStudio.Wpf.DiagramDesigner
/// Identifies the <see cref="CommandParameter" /> dependency property /// Identifies the <see cref="CommandParameter" /> dependency property
/// </summary> /// </summary>
public static readonly DependencyProperty CommandParameterProperty = DependencyProperty.Register( public static readonly DependencyProperty CommandParameterProperty = DependencyProperty.Register(
"CommandParameter", typeof(object), typeof(ControlMouseLeftButtonDownCommandBehavior), nameof(CommandParameter), typeof(object), typeof(ControlMouseLeftButtonDownCommandBehavior),
new PropertyMetadata(null, new PropertyMetadata(null,
(s, e) => (s, e) =>
{ {
@@ -162,7 +162,7 @@ namespace AIStudio.Wpf.DiagramDesigner
/// Identifies the <see cref="Command" /> dependency property /// Identifies the <see cref="Command" /> dependency property
/// </summary> /// </summary>
public static readonly DependencyProperty CommandProperty = DependencyProperty.Register( public static readonly DependencyProperty CommandProperty = DependencyProperty.Register(
"Command", typeof(ICommand), typeof(ControlMouseLeftButtonDownCommandBehavior), nameof(Command), typeof(ICommand), typeof(ControlMouseLeftButtonDownCommandBehavior),
new PropertyMetadata(null, new PropertyMetadata(null,
(s, e) => OnCommandChanged(s as ControlMouseLeftButtonDownCommandBehavior, e))); (s, e) => OnCommandChanged(s as ControlMouseLeftButtonDownCommandBehavior, e)));

View File

@@ -32,7 +32,7 @@ namespace AIStudio.Wpf.DiagramDesigner.Helpers
return serializer.Deserialize(sr) as T; return serializer.Deserialize(sr) as T;
} }
} }
catch (Exception ex) catch (Exception)
{ {
return null; return null;
} }

View File

@@ -33,7 +33,7 @@ namespace AIStudio.Wpf.DiagramDesigner
// FontItem = CopyHelper.Mapper<FontItem, IFontViewModel>(fontViewModel); // FontItem = CopyHelper.Mapper<FontItem, IFontViewModel>(fontViewModel);
//} //}
public SelectableDesignerItemBase(SelectableViewModelBase viewmodel) public SelectableDesignerItemBase(SelectableDesignerItemViewModelBase viewmodel)
{ {
this.Id = viewmodel.Id; this.Id = viewmodel.Id;
this.ZIndex = viewmodel.ZIndex; this.ZIndex = viewmodel.ZIndex;

View File

@@ -13,7 +13,7 @@ namespace AIStudio.Wpf.DiagramDesigner
IDrawModeViewModel DrawModeViewModel { get; } IDrawModeViewModel DrawModeViewModel { get; }
IQuickThemeViewModel QuickThemeViewModel { get; } IQuickThemeViewModel QuickThemeViewModel { get; }
ILockObjectViewModel LockObjectViewModel { get; } ILockObjectViewModel LockObjectViewModel { get; }
SelectableViewModelBase SelectedItem { get; set; } SelectableDesignerItemViewModelBase SelectedItem { get; set; }
IColorViewModel CopyDefaultColorViewModel(); IColorViewModel CopyDefaultColorViewModel();
IFontViewModel CopyDefaultFontViewModel(); IFontViewModel CopyDefaultFontViewModel();
} }
@@ -132,8 +132,8 @@ namespace AIStudio.Wpf.DiagramDesigner
} }
} }
private SelectableViewModelBase _selectedItem; private SelectableDesignerItemViewModelBase _selectedItem;
public SelectableViewModelBase SelectedItem public SelectableDesignerItemViewModelBase SelectedItem
{ {
get get
{ {

View File

@@ -13,7 +13,7 @@ using SvgPathProperties;
namespace AIStudio.Wpf.DiagramDesigner namespace AIStudio.Wpf.DiagramDesigner
{ {
public class ConnectorViewModel : SelectableViewModelBase public class ConnectorViewModel : SelectableDesignerItemViewModelBase
{ {
public ConnectorViewModel(IDiagramViewModel parent, FullyCreatedConnectorInfo sourceConnectorInfo, ConnectorInfoBase sinkConnectorInfo, DrawMode drawMode, RouterMode routerMode) public ConnectorViewModel(IDiagramViewModel parent, FullyCreatedConnectorInfo sourceConnectorInfo, ConnectorInfoBase sinkConnectorInfo, DrawMode drawMode, RouterMode routerMode)
{ {

View File

@@ -11,7 +11,7 @@ using AIStudio.Wpf.DiagramDesigner.Geometrys;
namespace AIStudio.Wpf.DiagramDesigner namespace AIStudio.Wpf.DiagramDesigner
{ {
public abstract class DesignerItemViewModelBase : SelectableViewModelBase public abstract class DesignerItemViewModelBase : SelectableDesignerItemViewModelBase
{ {
public DesignerItemViewModelBase() : base() public DesignerItemViewModelBase() : base()
{ {

View File

@@ -452,7 +452,7 @@ namespace AIStudio.Wpf.DiagramDesigner
{ {
if (e.OldItems != null) if (e.OldItems != null)
{ {
foreach (var item in e.OldItems.OfType<SelectableViewModelBase>()) foreach (var item in e.OldItems.OfType<SelectableDesignerItemViewModelBase>())
{ {
item.PropertyChanged -= Item_PropertyChanged; item.PropertyChanged -= Item_PropertyChanged;
item.Dispose(); item.Dispose();
@@ -460,7 +460,7 @@ namespace AIStudio.Wpf.DiagramDesigner
} }
if (e.NewItems != null) if (e.NewItems != null)
{ {
foreach (var item in e.NewItems.OfType<SelectableViewModelBase>()) foreach (var item in e.NewItems.OfType<SelectableDesignerItemViewModelBase>())
{ {
item.PropertyChanged += Item_PropertyChanged; item.PropertyChanged += Item_PropertyChanged;
} }
@@ -675,9 +675,9 @@ namespace AIStudio.Wpf.DiagramDesigner
} }
public ObservableCollection<SelectableViewModelBase> Items { get; set; } = new ObservableCollection<SelectableViewModelBase>(); public ObservableCollection<SelectableDesignerItemViewModelBase> Items { get; set; } = new ObservableCollection<SelectableDesignerItemViewModelBase>();
public List<SelectableViewModelBase> SelectedItems public List<SelectableDesignerItemViewModelBase> SelectedItems
{ {
get get
{ {
@@ -698,13 +698,13 @@ namespace AIStudio.Wpf.DiagramDesigner
} }
} }
public Func<SelectableViewModelBase, bool> OutAddVerify public Func<SelectableDesignerItemViewModelBase, bool> OutAddVerify
{ {
get; set; get; set;
} }
public bool AddVerify(SelectableViewModelBase item) public bool AddVerify(SelectableDesignerItemViewModelBase item)
{ {
if (item.InitData() == false) if (item.InitData() == false)
return false; return false;
@@ -722,14 +722,14 @@ namespace AIStudio.Wpf.DiagramDesigner
private void ExecuteDirectAddItemCommand(object parameter) private void ExecuteDirectAddItemCommand(object parameter)
{ {
if (parameter is SelectableViewModelBase ite) if (parameter is SelectableDesignerItemViewModelBase ite)
{ {
if (AddVerify(ite) != true) return; if (AddVerify(ite) != true) return;
ClearSelectedItems(); ClearSelectedItems();
Add(ite); Add(ite);
} }
else if (parameter is List<SelectableViewModelBase> items) else if (parameter is List<SelectableDesignerItemViewModelBase> items)
{ {
if (items.Select(p => AddVerify(p)).Any() != true) return; if (items.Select(p => AddVerify(p)).Any() != true) return;
@@ -741,7 +741,7 @@ namespace AIStudio.Wpf.DiagramDesigner
} }
} }
private void Add(SelectableViewModelBase item) private void Add(SelectableDesignerItemViewModelBase item)
{ {
item.Parent = this; item.Parent = this;
item.ZIndex = Items.Count; item.ZIndex = Items.Count;
@@ -768,7 +768,7 @@ namespace AIStudio.Wpf.DiagramDesigner
private void ExecuteAddItemCommand(object parameter) private void ExecuteAddItemCommand(object parameter)
{ {
if (parameter is SelectableViewModelBase ite) if (parameter is SelectableDesignerItemViewModelBase ite)
{ {
if (AddVerify(ite) != true) return; if (AddVerify(ite) != true) return;
@@ -781,7 +781,7 @@ namespace AIStudio.Wpf.DiagramDesigner
Items.Remove(ite); Items.Remove(ite);
}); });
} }
else if (parameter is List<SelectableViewModelBase> items) else if (parameter is List<SelectableDesignerItemViewModelBase> items)
{ {
if (items.Select(p => AddVerify(p)).Any() != true) return; if (items.Select(p => AddVerify(p)).Any() != true) return;
@@ -801,47 +801,34 @@ namespace AIStudio.Wpf.DiagramDesigner
private void ExecuteDirectRemoveItemCommand(object parameter) private void ExecuteDirectRemoveItemCommand(object parameter)
{ {
if (parameter is SelectableViewModelBase ite) if (parameter is SelectableDesignerItemViewModelBase ite)
{ {
ite.IsSelected = false; ite.IsSelected = false;
Items.Remove(ite); Items.Remove(ite);
if (ite.OutTextItem != null)
{
Items.Remove(ite.OutTextItem);
}
} }
else if (parameter is List<SelectableViewModelBase> items) else if (parameter is List<SelectableDesignerItemViewModelBase> items)
{ {
foreach (var item in items) foreach (var item in items)
{ {
item.IsSelected = false; item.IsSelected = false;
Items.Remove(item); Items.Remove(item);
if (item.OutTextItem != null)
{
Items.Remove(item.OutTextItem);
}
} }
} }
} }
private void ExecuteRemoveItemCommand(object parameter) private void ExecuteRemoveItemCommand(object parameter)
{ {
if (parameter is SelectableViewModelBase ite) if (parameter is SelectableDesignerItemViewModelBase ite)
{ {
DoCommandManager.DoNewCommand(this.ToString(), DoCommandManager.DoNewCommand(this.ToString(),
() => { () => {
ite.IsSelected = false; ite.IsSelected = false;
Items.Remove(ite); Items.Remove(ite);
if (ite.OutTextItem != null)
{
Items.Remove(ite.OutTextItem);
}
}, },
() => { () => {
Items.Add(ite); Items.Add(ite);
}); });
} }
else if (parameter is List<SelectableViewModelBase> items) else if (parameter is List<SelectableDesignerItemViewModelBase> items)
{ {
DoCommandManager.DoNewCommand(this.ToString(), DoCommandManager.DoNewCommand(this.ToString(),
() => { () => {
@@ -849,10 +836,6 @@ namespace AIStudio.Wpf.DiagramDesigner
{ {
item.IsSelected = false; item.IsSelected = false;
Items.Remove(item); Items.Remove(item);
if (item.OutTextItem != null)
{
Items.Remove(item.OutTextItem);
}
} }
}, },
@@ -860,10 +843,6 @@ namespace AIStudio.Wpf.DiagramDesigner
foreach (var item in items) foreach (var item in items)
{ {
Items.Add(item); Items.Add(item);
if (item.OutTextItem != null)
{
Items.Add(item.OutTextItem);
}
} }
}); });
@@ -1078,9 +1057,9 @@ namespace AIStudio.Wpf.DiagramDesigner
private void ExecuteBringForwardCommand(object parameter) private void ExecuteBringForwardCommand(object parameter)
{ {
List<SelectableViewModelBase> ordered = SelectedItems.OrderByDescending(p => p.ZIndex).ToList(); List<SelectableDesignerItemViewModelBase> ordered = SelectedItems.OrderByDescending(p => p.ZIndex).ToList();
List<SelectableViewModelBase> changeditems = new List<SelectableViewModelBase>(); List<SelectableDesignerItemViewModelBase> changeditems = new List<SelectableDesignerItemViewModelBase>();
var guid = Guid.NewGuid(); var guid = Guid.NewGuid();
DoCommandManager.DoNewCommand(this.ToString(), DoCommandManager.DoNewCommand(this.ToString(),
@@ -1097,7 +1076,7 @@ namespace AIStudio.Wpf.DiagramDesigner
item.ZIndex = newIndex; item.ZIndex = newIndex;
changeditems.Add(item); changeditems.Add(item);
IEnumerable<SelectableViewModelBase> it = this.Items.Where(p => p.ZIndex == newIndex); IEnumerable<SelectableDesignerItemViewModelBase> it = this.Items.Where(p => p.ZIndex == newIndex);
foreach (var elm in it) foreach (var elm in it)
{ {
@@ -1127,10 +1106,10 @@ namespace AIStudio.Wpf.DiagramDesigner
} }
private void ExecuteBringToFrontCommand(object parameter) private void ExecuteBringToFrontCommand(object parameter)
{ {
List<SelectableViewModelBase> selectionSorted = SelectedItems.OrderByDescending(p => p.ZIndex).ToList(); List<SelectableDesignerItemViewModelBase> selectionSorted = SelectedItems.OrderByDescending(p => p.ZIndex).ToList();
List<SelectableViewModelBase> childrenSorted = Items.OrderByDescending(p => p.ZIndex).ToList(); List<SelectableDesignerItemViewModelBase> childrenSorted = Items.OrderByDescending(p => p.ZIndex).ToList();
List<SelectableViewModelBase> changeditems = new List<SelectableViewModelBase>(); List<SelectableDesignerItemViewModelBase> changeditems = new List<SelectableDesignerItemViewModelBase>();
var guid = Guid.NewGuid(); var guid = Guid.NewGuid();
DoCommandManager.DoNewCommand(this.ToString(), DoCommandManager.DoNewCommand(this.ToString(),
@@ -1138,7 +1117,7 @@ namespace AIStudio.Wpf.DiagramDesigner
int i = childrenSorted.Count - 1; int i = childrenSorted.Count - 1;
int j = childrenSorted.Count - selectionSorted.Count - 1; int j = childrenSorted.Count - selectionSorted.Count - 1;
foreach (SelectableViewModelBase item in childrenSorted) foreach (SelectableDesignerItemViewModelBase item in childrenSorted)
{ {
item.SetOldValue<int>(item.ZIndex, nameof(item.ZIndex), guid.ToString()); item.SetOldValue<int>(item.ZIndex, nameof(item.ZIndex), guid.ToString());
if (selectionSorted.Contains(item)) if (selectionSorted.Contains(item))
@@ -1167,10 +1146,10 @@ namespace AIStudio.Wpf.DiagramDesigner
} }
private void ExecuteSendBackwardCommand(object parameter) private void ExecuteSendBackwardCommand(object parameter)
{ {
List<SelectableViewModelBase> ordered = this.SelectedItems.OrderBy(p => p.ZIndex).ToList(); List<SelectableDesignerItemViewModelBase> ordered = this.SelectedItems.OrderBy(p => p.ZIndex).ToList();
int count = this.Items.Count; int count = this.Items.Count;
List<SelectableViewModelBase> changeditems = new List<SelectableViewModelBase>(); List<SelectableDesignerItemViewModelBase> changeditems = new List<SelectableDesignerItemViewModelBase>();
var guid = Guid.NewGuid(); var guid = Guid.NewGuid();
DoCommandManager.DoNewCommand(this.ToString(), DoCommandManager.DoNewCommand(this.ToString(),
@@ -1185,7 +1164,7 @@ namespace AIStudio.Wpf.DiagramDesigner
item.SetOldValue<int>(item.ZIndex, nameof(item.ZIndex), guid.ToString()); item.SetOldValue<int>(item.ZIndex, nameof(item.ZIndex), guid.ToString());
item.ZIndex = newIndex; item.ZIndex = newIndex;
changeditems.Add(item); changeditems.Add(item);
IEnumerable<SelectableViewModelBase> it = this.Items.Where(p => p.ZIndex == newIndex); IEnumerable<SelectableDesignerItemViewModelBase> it = this.Items.Where(p => p.ZIndex == newIndex);
foreach (var elm in it) foreach (var elm in it)
{ {
@@ -1216,10 +1195,10 @@ namespace AIStudio.Wpf.DiagramDesigner
} }
private void ExecuteSendToBackCommand(object parameter) private void ExecuteSendToBackCommand(object parameter)
{ {
List<SelectableViewModelBase> selectionSorted = SelectedItems.OrderByDescending(p => p.ZIndex).ToList(); List<SelectableDesignerItemViewModelBase> selectionSorted = SelectedItems.OrderByDescending(p => p.ZIndex).ToList();
List<SelectableViewModelBase> childrenSorted = Items.OrderByDescending(p => p.ZIndex).ToList(); List<SelectableDesignerItemViewModelBase> childrenSorted = Items.OrderByDescending(p => p.ZIndex).ToList();
List<SelectableViewModelBase> changeditems = new List<SelectableViewModelBase>(); List<SelectableDesignerItemViewModelBase> changeditems = new List<SelectableDesignerItemViewModelBase>();
var guid = Guid.NewGuid(); var guid = Guid.NewGuid();
DoCommandManager.DoNewCommand(this.ToString(), DoCommandManager.DoNewCommand(this.ToString(),
@@ -1227,7 +1206,7 @@ namespace AIStudio.Wpf.DiagramDesigner
int i = childrenSorted.Count - 1; int i = childrenSorted.Count - 1;
int j = selectionSorted.Count - 1; int j = selectionSorted.Count - 1;
foreach (SelectableViewModelBase item in childrenSorted) foreach (SelectableDesignerItemViewModelBase item in childrenSorted)
{ {
item.SetOldValue<int>(item.ZIndex, nameof(item.ZIndex), guid.ToString()); item.SetOldValue<int>(item.ZIndex, nameof(item.ZIndex), guid.ToString());
if (selectionSorted.Contains(item)) if (selectionSorted.Contains(item))
@@ -1406,16 +1385,6 @@ namespace AIStudio.Wpf.DiagramDesigner
} }
} }
//连线上的文本
foreach (var selectedConnection in selectedConnections)
{
if (selectedConnection.OutTextItem != null)
{
selectedDesignerItems.Add(selectedConnection.OutTextItem);
}
}
string json = new SerializableObject string json = new SerializableObject
{ {
DesignerItems = selectedDesignerItems.Select(p => p.ToSerializabObject()).Where(p => p != null).ToList(), DesignerItems = selectedDesignerItems.Select(p => p.ToSerializabObject()).Where(p => p != null).ToList(),
@@ -1438,7 +1407,7 @@ namespace AIStudio.Wpf.DiagramDesigner
return; return;
try try
{ {
List<SelectableViewModelBase> items = new List<SelectableViewModelBase>(); List<SelectableDesignerItemViewModelBase> items = new List<SelectableDesignerItemViewModelBase>();
SerializableObject copyitem = JsonConvert.DeserializeObject<SerializableObject>(clipboardData); SerializableObject copyitem = JsonConvert.DeserializeObject<SerializableObject>(clipboardData);
@@ -1469,7 +1438,7 @@ namespace AIStudio.Wpf.DiagramDesigner
OffsetX += 10; OffsetX += 10;
OffsetY += 10; OffsetY += 10;
List<SelectableViewModelBase> connectors = new List<SelectableViewModelBase>(); List<SelectableDesignerItemViewModelBase> connectors = new List<SelectableDesignerItemViewModelBase>();
foreach (var connection in copyitem.Connections) foreach (var connection in copyitem.Connections)
{ {
var connectionItem = JsonConvert.DeserializeObject<ConnectionItem>(connection.ObjectJson); var connectionItem = JsonConvert.DeserializeObject<ConnectionItem>(connection.ObjectJson);
@@ -1491,12 +1460,6 @@ namespace AIStudio.Wpf.DiagramDesigner
ConnectorViewModel connectionVM = new ConnectorViewModel(this, sourceConnectorInfo, sinkConnectorInfo, connectionItem); ConnectorViewModel connectionVM = new ConnectorViewModel(this, sourceConnectorInfo, sinkConnectorInfo, connectionItem);
connectors.Add(connectionVM); connectors.Add(connectionVM);
DesignerItemViewModelBase textItem = items.OfType<DesignerItemViewModelBase>().FirstOrDefault(x => x.ParentId == connectionItem.Id);
if (textItem != null)
{
connectionVM.OutTextItem = textItem;
}
} }
DirectAddItemCommand.Execute(connectors); DirectAddItemCommand.Execute(connectors);
@@ -1550,7 +1513,7 @@ namespace AIStudio.Wpf.DiagramDesigner
} }
} }
private bool ItemsToDeleteHasConnector(List<SelectableViewModelBase> itemsToRemove, ConnectorInfoBase connector) private bool ItemsToDeleteHasConnector(List<SelectableDesignerItemViewModelBase> itemsToRemove, ConnectorInfoBase connector)
{ {
if (connector is FullyCreatedConnectorInfo fully) if (connector is FullyCreatedConnectorInfo fully)
{ {
@@ -1571,8 +1534,8 @@ namespace AIStudio.Wpf.DiagramDesigner
private void ExecuteDeleteCommand(object parameter) private void ExecuteDeleteCommand(object parameter)
{ {
List<SelectableViewModelBase> itemsToRemove = SelectedItems.OfType<SelectableViewModelBase>().ToList(); List<SelectableDesignerItemViewModelBase> itemsToRemove = SelectedItems.OfType<SelectableDesignerItemViewModelBase>().ToList();
List<SelectableViewModelBase> connectionsToAlsoRemove = new List<SelectableViewModelBase>(); List<SelectableDesignerItemViewModelBase> connectionsToAlsoRemove = new List<SelectableDesignerItemViewModelBase>();
foreach (var connector in Items.OfType<ConnectorViewModel>()) foreach (var connector in Items.OfType<ConnectorViewModel>())
{ {
@@ -1744,7 +1707,7 @@ namespace AIStudio.Wpf.DiagramDesigner
public void UpdateZIndex() public void UpdateZIndex()
{ {
List<SelectableViewModelBase> ordered = Items.OrderBy(p => p.ZIndex).ToList(); List<SelectableDesignerItemViewModelBase> ordered = Items.OrderBy(p => p.ZIndex).ToList();
for (int i = 0; i < ordered.Count; i++) for (int i = 0; i < ordered.Count; i++)

View File

@@ -0,0 +1,165 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Windows.Input;
using System.Windows.Media;
using AIStudio.Wpf.DiagramDesigner.Models;
using Newtonsoft.Json;
namespace AIStudio.Wpf.DiagramDesigner
{
public interface ISelectItems
{
SimpleCommand SelectItemCommand
{
get;
}
}
public abstract class SelectableDesignerItemViewModelBase : SelectableViewModelBase, ISelectItems, ISelectable, IGroupable
{
public SelectableDesignerItemViewModelBase():base()
{
}
public SelectableDesignerItemViewModelBase(IDiagramViewModel parent, SelectableDesignerItemBase designer):base(parent, designer)
{
}
public SelectableDesignerItemViewModelBase(IDiagramViewModel parent, string json) : base(parent, json)
{
}
protected override void Init()
{
base.Init();
SelectItemCommand = new SimpleCommand(ExecuteSelectItemCommand);
EditCommand = new SimpleCommand(ExecuteEditCommand);
}
public virtual bool InitData()
{
return true;
}
public virtual bool EditData()
{
return true;
}
public SimpleCommand SelectItemCommand
{
get; private set;
}
public ICommand EditCommand
{
get; private set;
}
private string _text;
[Browsable(true)]
[CanDo]
public override string Text
{
get
{
var text = _text;
if (FontViewModel.FontCase == FontCase.Upper)
{
return text?.ToUpper();
}
else if (FontViewModel.FontCase == FontCase.Lower)
{
return text?.ToLower();
}
else
{
return text;
}
}
set
{
if (SetProperty(ref _text, value))
{
if (!string.IsNullOrEmpty(_text))
{
ShowText = true;
}
}
}
}
private bool _isReadOnlyText = false;
public bool IsReadOnlyText
{
get
{
if (IsReadOnly)
return true;
return _isReadOnlyText;
}
set
{
SetProperty(ref _isReadOnlyText, value);
}
}
private bool _showText;
public virtual bool ShowText
{
get
{
return _showText;
}
set
{
SetProperty(ref _showText, value);
}
}
private void ExecuteSelectItemCommand(object param)
{
SelectItem((bool)param, !IsSelected);
}
private void SelectItem(bool newselect, bool select)
{
if (newselect)
{
foreach (var designerItemViewModelBase in Parent.SelectedItems.ToList())
{
designerItemViewModelBase._isSelected = false;
}
}
IsSelected = select;
}
public override void AddToSelection(bool selected)
{
foreach (SelectableDesignerItemViewModelBase item in Parent.SelectedItems.ToList())
item.IsSelected = false;
Parent.SelectedItems.Clear();
if (selected == true)
{
Parent.SelectionService.AddToSelection(this);
}
}
protected virtual void ExecuteEditCommand(object param)
{
if (IsReadOnly == true) return;
ShowText = true;
}
}
}

View File

@@ -10,19 +10,9 @@ using Newtonsoft.Json;
namespace AIStudio.Wpf.DiagramDesigner namespace AIStudio.Wpf.DiagramDesigner
{ {
public abstract class SelectableViewModelBase : BindableBase, ISelectable
public interface ISelectItems
{ {
SimpleCommand SelectItemCommand protected IDiagramServiceProvider _service
{
get;
}
}
public abstract class SelectableViewModelBase : BindableBase, ISelectItems, ISelectable, IGroupable
{
private IDiagramServiceProvider _service
{ {
get get
{ {
@@ -80,8 +70,6 @@ namespace AIStudio.Wpf.DiagramDesigner
FontViewModel = _service.CopyDefaultFontViewModel(); FontViewModel = _service.CopyDefaultFontViewModel();
LockObjectViewModel = new LockObjectViewModel(); LockObjectViewModel = new LockObjectViewModel();
SelectItemCommand = new SimpleCommand(ExecuteSelectItemCommand);
EditCommand = new SimpleCommand(ExecuteEditCommand);
} }
protected virtual void LoadDesignerItemViewModel(IDiagramViewModel parent, SelectableDesignerItemBase designerbase) protected virtual void LoadDesignerItemViewModel(IDiagramViewModel parent, SelectableDesignerItemBase designerbase)
@@ -98,36 +86,10 @@ namespace AIStudio.Wpf.DiagramDesigner
FontViewModel = CopyHelper.Mapper<FontViewModel, FontItem>(designerbase.FontItem); FontViewModel = CopyHelper.Mapper<FontViewModel, FontItem>(designerbase.FontItem);
} }
public virtual bool InitData()
{
return true;
}
public virtual bool EditData()
{
return true;
}
public List<SelectableViewModelBase> SelectedItems
{
//todo
get
{
return Parent.SelectedItems;
}
}
public IDiagramViewModel Parent public IDiagramViewModel Parent
{ {
get; set; get; set;
} }
public SimpleCommand SelectItemCommand
{
get; private set;
}
public ICommand EditCommand
{
get; private set;
}
public Guid Id public Guid Id
{ {
get; set; get; set;
@@ -145,19 +107,15 @@ namespace AIStudio.Wpf.DiagramDesigner
SetProperty(ref _parentId, value); SetProperty(ref _parentId, value);
} }
} }
public SelectableViewModelBase ParentItem
{
get; set;
}
public bool IsGroup public bool IsGroup
{ {
get; set; get; set;
} }
private bool _isSelected; protected bool _isSelected;
[Browsable(false)] [Browsable(false)]
public bool IsSelected public virtual bool IsSelected
{ {
get get
{ {
@@ -165,24 +123,7 @@ namespace AIStudio.Wpf.DiagramDesigner
} }
set set
{ {
if (SetProperty(ref _isSelected, value)) SetProperty(ref _isSelected, value);
{
//如果没有文字,失去焦点自动清除
if (_isSelected == false && string.IsNullOrEmpty(Text))
{
ShowText = false;
if (this is TextDesignerItemViewModel)
{
if (ParentItem != null)
{
ParentItem.OutTextItem = null;
}
Parent.DirectRemoveItemCommand.Execute(this);
}
}
}
} }
} }
@@ -271,19 +212,14 @@ namespace AIStudio.Wpf.DiagramDesigner
get; set; get; set;
} }
private string _text; private string _text;
[Browsable(true)] [Browsable(true)]
[CanDo] [CanDo]
public string Text public virtual string Text
{ {
get get
{ {
var text = _text; var text = _text;
if (OutTextItem != null)
{
text = OutTextItem._text;
}
if (FontViewModel.FontCase == FontCase.Upper) if (FontViewModel.FontCase == FontCase.Upper)
{ {
return text?.ToUpper(); return text?.ToUpper();
@@ -299,81 +235,17 @@ namespace AIStudio.Wpf.DiagramDesigner
} }
set set
{ {
if (OutTextItem != null) if (SetProperty(ref _text, value))
{ {
OutTextItem.Text = value;
}
else if (SetProperty(ref _text, value))
{
if (!string.IsNullOrEmpty(_text))
{
ShowText = true;
}
} }
} }
} }
private bool _isReadOnlyText = false;
public bool IsReadOnlyText public virtual void AddToSelection(bool selected)
{ {
get
{
if (IsReadOnly)
return true;
return _isReadOnlyText;
}
set
{
SetProperty(ref _isReadOnlyText, value);
}
}
private bool _showText;
public virtual bool ShowText
{
get
{
return _showText;
}
set
{
SetProperty(ref _showText, value);
}
}
public DesignerItemViewModelBase OutTextItem
{
get; set;
}
private void ExecuteSelectItemCommand(object param)
{
SelectItem((bool)param, !IsSelected);
}
private void SelectItem(bool newselect, bool select)
{
if (newselect)
{
foreach (var designerItemViewModelBase in Parent.SelectedItems.ToList())
{
designerItemViewModelBase._isSelected = false;
}
}
IsSelected = select;
}
public void AddToSelection(bool selected)
{
foreach (SelectableViewModelBase item in Parent.SelectedItems.ToList())
item.IsSelected = false;
Parent.SelectedItems.Clear();
if (selected == true)
{
Parent.SelectionService.AddToSelection(this);
}
} }
private void FontViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) private void FontViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
@@ -384,13 +256,6 @@ namespace AIStudio.Wpf.DiagramDesigner
} }
} }
protected virtual void ExecuteEditCommand(object param)
{
if (IsReadOnly == true) return;
ShowText = true;
}
public virtual void Dispose() public virtual void Dispose()
{ {
} }

View File

@@ -15,11 +15,11 @@ namespace AIStudio.Wpf.DiagramDesigner
{ {
get; set; get; set;
} }
List<SelectableViewModelBase> SelectedItems List<SelectableDesignerItemViewModelBase> SelectedItems
{ {
get; get;
} }
ObservableCollection<SelectableViewModelBase> Items ObservableCollection<SelectableDesignerItemViewModelBase> Items
{ {
get; get;
} }
@@ -183,7 +183,7 @@ namespace AIStudio.Wpf.DiagramDesigner
get; get;
} }
Func<SelectableViewModelBase, bool> OutAddVerify Func<SelectableDesignerItemViewModelBase, bool> OutAddVerify
{ {
get; set; get; set;
} }

View File

@@ -14,8 +14,8 @@ namespace AIStudio.Wpf.DiagramDesigner
{ {
public class GifImageItemViewModel : DesignerItemViewModelBase public class GifImageItemViewModel : DesignerItemViewModelBase
{ {
private IDisposable propertyChangedSubscription; //private IDisposable propertyChangedSubscription;
private IDisposable connectorsChangedSubscription; //private IDisposable connectorsChangedSubscription;
public SimpleCommand AddItemCommand { get; private set; } public SimpleCommand AddItemCommand { get; private set; }
@@ -54,7 +54,7 @@ namespace AIStudio.Wpf.DiagramDesigner
ClearConnectors(); ClearConnectors();
//propertyChangedSubscription = WhenPropertyChanged.Where(o => o.ToString() == "Left" || o.ToString() == "Top" || o.ToString() == "ItemWidth" || o.ToString() == "ItemHeight").Subscribe(ChangeImageElement); //propertyChangedSubscription = WhenPropertyChanged.Where(o => o.ToString() == "Left" || o.ToString() == "Top" || o.ToString() == "ItemWidth" || o.ToString() == "ItemHeight").Subscribe(ChangeImageElement);
connectorsChangedSubscription = WhenConnectorsChanged.Subscribe(OnConnectorsChanged); //connectorsChangedSubscription = WhenConnectorsChanged.Subscribe(OnConnectorsChanged);
BuildMenuOptions(); BuildMenuOptions();
} }
@@ -127,33 +127,33 @@ namespace AIStudio.Wpf.DiagramDesigner
} }
} }
private void OnConnectorsChanged(NotifyCollectionChangedEventArgs args) //private void OnConnectorsChanged(NotifyCollectionChangedEventArgs args)
{ //{
if (args.Action == NotifyCollectionChangedAction.Add) // if (args.Action == NotifyCollectionChangedAction.Add)
{ // {
if (args.NewItems.Count > 0) // if (args.NewItems.Count > 0)
{ // {
foreach (var item in args.NewItems) // foreach (var item in args.NewItems)
{ // {
} // }
} // }
} // }
else if (args.Action == NotifyCollectionChangedAction.Remove) // else if (args.Action == NotifyCollectionChangedAction.Remove)
{ // {
if (args.OldItems.Count > 0) // if (args.OldItems.Count > 0)
{ // {
foreach (var item in args.OldItems) // foreach (var item in args.OldItems)
{ // {
} // }
} // }
} // }
else if (args.Action == NotifyCollectionChangedAction.Reset) // else if (args.Action == NotifyCollectionChangedAction.Reset)
{ // {
} // }
} //}
} }
} }