动画demo完成

This commit is contained in:
艾竹
2023-01-27 14:54:03 +08:00
parent 64ea56f01e
commit 72e3efb052
81 changed files with 1211 additions and 503 deletions

View File

@@ -1236,6 +1236,16 @@
</DockPanel> </DockPanel>
</DataTemplate> </DataTemplate>
</Fluent:ComboBox.ItemTemplate> </Fluent:ComboBox.ItemTemplate>
</Fluent:ComboBox>
</StackPanel>
<StackPanel>
<TextBlock Text="线条动画" Margin="5"/>
<Fluent:ComboBox Size="Small" Width="140" Margin="5" IsEditable="False" helper:EnumHelper.Enum="{x:Type dd:LineAnimation}" SelectedItem="{Binding ColorViewModel.LineAnimation}">
<Fluent:ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding .,Converter={StaticResource EnumDescriptionConverter}}" />
</DataTemplate>
</Fluent:ComboBox.ItemTemplate>
</Fluent:ComboBox> </Fluent:ComboBox>
</StackPanel> </StackPanel>
</StackPanel> </StackPanel>
@@ -1246,7 +1256,7 @@
</Fluent:DropDownButton.ToolTip> </Fluent:DropDownButton.ToolTip>
</Fluent:DropDownButton> </Fluent:DropDownButton>
<Fluent:SplitButton IsCheckable="True" IsChecked="{Binding LockObjectViewModel.LockObject[0].IsChecked}" SizeDefinition="Middle" MaxDropDownHeight="500"> <Fluent:SplitButton IsCheckable="True" Icon="{iconPacks:Material Kind=Lock}" IsChecked="{Binding LockObjectViewModel.LockObject[0].IsChecked}" SizeDefinition="Middle" MaxDropDownHeight="500">
<Fluent:SplitButton.Style> <Fluent:SplitButton.Style>
<Style TargetType="{x:Type Fluent:SplitButton}" BasedOn="{StaticResource RibbonSplitButtonStyle}"> <Style TargetType="{x:Type Fluent:SplitButton}" BasedOn="{StaticResource RibbonSplitButtonStyle}">
<Style.Triggers> <Style.Triggers>

View File

@@ -297,24 +297,7 @@
</DataTemplate> </DataTemplate>
</Setter.Value> </Setter.Value>
</Setter> </Setter>
</Style> </Style>
<Style x:Key="LineAnimationStyle" TargetType="{x:Type ContentControl}">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<Grid DataContext="{Binding Path=DataContext,RelativeSource={RelativeSource AncestorType={x:Type ContentControl}}}">
<Fluent:ComboBox Size="Small" BorderThickness="0" Height="Auto" IsEditable="False" helper:EnumHelper.Enum="{x:Type dd:LineAnimation}" SelectedItem="{Binding LineAnimation}">
<Fluent:ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding .,Converter={StaticResource EnumDescriptionConverter}}" />
</DataTemplate>
</Fluent:ComboBox.ItemTemplate>
</Fluent:ComboBox>
</Grid>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</dd:PropertiesView.Resources> </dd:PropertiesView.Resources>
</dd:PropertiesView> </dd:PropertiesView>
</ControlTemplate> </ControlTemplate>

View File

@@ -10,7 +10,12 @@ namespace AIStudio.Wpf.DiagramDesigner.Additionals.Extensions.ViewModels
{ {
private IUIVisualizerService visualiserService; private IUIVisualizerService visualiserService;
public BarcodeDesignerItemViewModel() : base() public BarcodeDesignerItemViewModel() : this(null)
{
}
public BarcodeDesignerItemViewModel(IDiagramViewModel root) : base(root)
{ {
} }
@@ -29,16 +34,16 @@ namespace AIStudio.Wpf.DiagramDesigner.Additionals.Extensions.ViewModels
return new DesignerItemBase(this, Format.ToString()); return new DesignerItemBase(this, Format.ToString());
} }
protected override void Init() protected override void Init(IDiagramViewModel root)
{ {
base.Init(); base.Init(root);
visualiserService = ApplicationServicesProvider.Instance.Provider.VisualizerService; visualiserService = ApplicationServicesProvider.Instance.Provider.VisualizerService;
} }
protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase) protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
{ {
base.LoadDesignerItemViewModel(root, designerbase); base.LoadDesignerItemViewModel(designerbase);
if (designerbase is DesignerItemBase designer) if (designerbase is DesignerItemBase designer)
{ {

View File

@@ -10,7 +10,12 @@ namespace AIStudio.Wpf.DiagramDesigner.Additionals.Extensions.ViewModels
public class OutLineTextDesignerItemViewModel : TextDesignerItemViewModel public class OutLineTextDesignerItemViewModel : TextDesignerItemViewModel
{ {
private IUIVisualizerService visualiserService; private IUIVisualizerService visualiserService;
public OutLineTextDesignerItemViewModel() : base() public OutLineTextDesignerItemViewModel() : this(null)
{
}
public OutLineTextDesignerItemViewModel(IDiagramViewModel root) : base(root)
{ {
} }
@@ -30,9 +35,9 @@ namespace AIStudio.Wpf.DiagramDesigner.Additionals.Extensions.ViewModels
return new TextDesignerItem(this); return new TextDesignerItem(this);
} }
protected override void Init() protected override void Init(IDiagramViewModel root)
{ {
base.Init(); base.Init(root);
visualiserService = ApplicationServicesProvider.Instance.Provider.VisualizerService; visualiserService = ApplicationServicesProvider.Instance.Provider.VisualizerService;

View File

@@ -7,7 +7,12 @@ namespace AIStudio.Wpf.DiagramDesigner.Additionals.Extensions.ViewModels
{ {
public class PathItemViewModel : DesignerItemViewModelBase public class PathItemViewModel : DesignerItemViewModelBase
{ {
public PathItemViewModel() : base() public PathItemViewModel() : this(null)
{
}
public PathItemViewModel(IDiagramViewModel root) : base(root)
{ {
} }
@@ -17,7 +22,6 @@ namespace AIStudio.Wpf.DiagramDesigner.Additionals.Extensions.ViewModels
} }
public PathItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) public PathItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
{ {
@@ -28,9 +32,9 @@ namespace AIStudio.Wpf.DiagramDesigner.Additionals.Extensions.ViewModels
return new PathDesignerItem(this); return new PathDesignerItem(this);
} }
protected override void Init() protected override void Init(IDiagramViewModel root)
{ {
base.Init(); base.Init(root);
this.ShowConnectors = false; this.ShowConnectors = false;
} }

View File

@@ -10,7 +10,12 @@ namespace AIStudio.Wpf.DiagramDesigner.Additionals.Extensions.ViewModels
{ {
private IUIVisualizerService visualiserService; private IUIVisualizerService visualiserService;
public PersistDesignerItemViewModel() : base() public PersistDesignerItemViewModel() : this(null)
{
}
public PersistDesignerItemViewModel(IDiagramViewModel root) : base(root)
{ {
} }
@@ -30,17 +35,17 @@ namespace AIStudio.Wpf.DiagramDesigner.Additionals.Extensions.ViewModels
return new PersistDesignerItem(this); return new PersistDesignerItem(this);
} }
protected override void Init() protected override void Init(IDiagramViewModel root)
{ {
base.Init(); base.Init(root);
visualiserService = ApplicationServicesProvider.Instance.Provider.VisualizerService; visualiserService = ApplicationServicesProvider.Instance.Provider.VisualizerService;
this.ShowConnectors = false; this.ShowConnectors = false;
} }
protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase) protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
{ {
base.LoadDesignerItemViewModel(root, designerbase); base.LoadDesignerItemViewModel(designerbase);
if (designerbase is PersistDesignerItem designer) if (designerbase is PersistDesignerItem designer)
{ {

View File

@@ -10,7 +10,12 @@ namespace AIStudio.Wpf.DiagramDesigner.Additionals.Extensions.ViewModels
{ {
private IUIVisualizerService visualiserService; private IUIVisualizerService visualiserService;
public SettingsDesignerItemViewModel() : base() public SettingsDesignerItemViewModel() : this(null)
{
}
public SettingsDesignerItemViewModel(IDiagramViewModel root) : base(root)
{ {
} }
@@ -30,17 +35,17 @@ namespace AIStudio.Wpf.DiagramDesigner.Additionals.Extensions.ViewModels
return new SettingsDesignerItem(this); return new SettingsDesignerItem(this);
} }
protected override void Init() protected override void Init(IDiagramViewModel root)
{ {
base.Init(); base.Init(root);
visualiserService = ApplicationServicesProvider.Instance.Provider.VisualizerService; visualiserService = ApplicationServicesProvider.Instance.Provider.VisualizerService;
this.ShowConnectors = false; this.ShowConnectors = false;
} }
protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase) protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
{ {
base.LoadDesignerItemViewModel(root, designerbase); base.LoadDesignerItemViewModel(designerbase);
if (designerbase is SettingsDesignerItem designer) if (designerbase is SettingsDesignerItem designer)
{ {

View File

@@ -16,11 +16,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Folder Include="Views\Algorithms\" /> <PackageReference Include="AIStudio.Wpf.Controls" Version="1.1.45" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="AIStudio.Wpf.Controls" Version="1.1.44" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@@ -0,0 +1,12 @@
<UserControl x:Class="AIStudio.Wpf.DiagramDesigner.Demo.Controls.NotDoneYetControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:AIStudio.Wpf.DiagramDesigner.Demo.Controls"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<Grid>
<TextBlock Text="暂未完成,敬请期待!" FontSize="28" VerticalAlignment="Center" HorizontalAlignment="Center"/>
</Grid>
</UserControl>

View File

@@ -0,0 +1,26 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace AIStudio.Wpf.DiagramDesigner.Demo.Controls
{
/// <summary>
/// NotDoneYetControl.xaml 的交互逻辑
/// </summary>
public partial class NotDoneYetControl : UserControl
{
public NotDoneYetControl()
{
InitializeComponent();
}
}
}

View File

@@ -3,19 +3,10 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:AIStudio.Wpf.DiagramDesigner.Demo.Controls" xmlns:ac="https://gitee.com/akwkevin/AI-wpf-controls"
mc:Ignorable="d" mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800"> d:DesignHeight="450" d:DesignWidth="800">
<Grid> <ac:OptionsPanel HeaderText="{Binding Title}" HorizontalAlignment="Right" VerticalAlignment="Top" BorderBrush="#b8daff" BorderThickness="1" Background="#cce5ff" ac:ControlAttach.CornerRadius="3">
<Border MaxWidth="350" Margin="10" HorizontalAlignment="Right" VerticalAlignment="Bottom" BorderBrush="#b8daff" BorderThickness="1" Background="#cce5ff" CornerRadius="3" IsHitTestVisible="False"> <TextBlock MaxWidth="350" Grid.Row="1" Text="{Binding Info}" Margin="10" TextWrapping="WrapWithOverflow" Foreground="#004085" />
<Grid> </ac:OptionsPanel>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBlock FontSize="18" Text="{Binding Title}" Margin="10" Foreground="#004085"/>
<TextBlock Grid.Row="1" Text="{Binding Info}" Margin="10,0,10,10" TextWrapping="WrapWithOverflow" Foreground="#004085" />
</Grid>
</Border>
</Grid>
</UserControl> </UserControl>

View File

@@ -14,9 +14,20 @@
<ColumnDefinition Width="Auto" MinWidth="100" /> <ColumnDefinition Width="Auto" MinWidth="100" />
<ColumnDefinition Width="*" /> <ColumnDefinition Width="*" />
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<ListBox x:Name="listbox" SelectionChanged="ListBox_SelectionChanged"> <!--<ListBox x:Name="listbox" SelectionChanged="ListBox_SelectionChanged">
</ListBox> </ListBox>-->
<TreeView x:Name="treeview"
Style="{StaticResource AIStudio.Styles.TreeView.Menu}"
SelectedItemChanged="treeview_SelectedItemChanged">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate DataType="{x:Type ac:HamburgerTreeMenuGlyphItem}" ItemsSource="{Binding Path=Children}">
<Grid Margin="5">
<TextBlock VerticalAlignment="Center" Text="{Binding Title}" />
</Grid>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
<GridSplitter Width="2" <GridSplitter Width="2"
VerticalAlignment="Stretch" /> VerticalAlignment="Stretch" />
<ContentControl x:Name="ContentControl" <ContentControl x:Name="ContentControl"

View File

@@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
@@ -35,17 +36,75 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo
assembly.GetTypes().Where(x => x.Namespace.StartsWith("AIStudio.Wpf.DiagramDesigner.Demo.ViewModels") && x.Name.Contains("ViewModel")).ToList().ForEach(x => _viewModelDic.Add(x.Name.Remove(x.Name.Length - 9), x)); assembly.GetTypes().Where(x => x.Namespace.StartsWith("AIStudio.Wpf.DiagramDesigner.Demo.ViewModels") && x.Name.Contains("ViewModel")).ToList().ForEach(x => _viewModelDic.Add(x.Name.Remove(x.Name.Length - 9), x));
} }
#endregion #endregion
List<MenuItemViewModel> _menus;
public MainWindow() public MainWindow()
{ {
InitializeComponent(); InitializeComponent();
this.Loaded += MainWindow_Loaded; this.Loaded += MainWindow_Loaded;
listbox.ItemsSource = _viewDic.Keys.ToList();
_menus = new List<MenuItemViewModel>()
{
new MenuItemViewModel(){Title = "Simple"},
new MenuItemViewModel(){Title = "Locked"},
new MenuItemViewModel(){Title = "Events"},
new MenuItemViewModel(){Title = "DynamicInsertions"},
new MenuItemViewModel(){Title = "Performance"},
new MenuItemViewModel(){Title = "Zoom"},
new MenuItemViewModel(){Title = "SnapToGrid"},
new MenuItemViewModel(){Title = "DragAndDrop"},
new MenuItemViewModel(){Title = "Nodes",
Children=new List<MenuItemViewModel>
{
new MenuItemViewModel(){Title = "Svg"},
new MenuItemViewModel(){Title = "Portless"},
}
},
new MenuItemViewModel(){Title = "Links",
Children=new List<MenuItemViewModel>
{
new MenuItemViewModel(){Title = "Snapping"},
new MenuItemViewModel(){Title = "Labels"},
new MenuItemViewModel(){Title = "Vertices"},
new MenuItemViewModel(){Title = "Markers"},
new MenuItemViewModel(){Title = "Routers"},
new MenuItemViewModel(){Title = "PathGenerators"},
}
},
new MenuItemViewModel(){Title = "Groups",
Children=new List<MenuItemViewModel>
{
new MenuItemViewModel(){Title = "Grouping"},
}
},
new MenuItemViewModel(){Title = "Customization",
Children=new List<MenuItemViewModel>
{
new MenuItemViewModel(){Title = "CustomNode"},
new MenuItemViewModel(){Title = "CustomLink"},
new MenuItemViewModel(){Title = "CustomPort"},
new MenuItemViewModel(){Title = "CustomGroup"},
}
},
new MenuItemViewModel(){Title = "Algorithms",
Children=new List<MenuItemViewModel>
{
}
},
new MenuItemViewModel(){Title = "Animations",
Children=new List<MenuItemViewModel>
{
new MenuItemViewModel(){Title = "PathAnimation"},
new MenuItemViewModel(){Title = "LineAnimation"},
}
},
};
treeview.ItemsSource = _menus;
} }
private void MainWindow_Loaded(object sender, RoutedEventArgs e) private void MainWindow_Loaded(object sender, RoutedEventArgs e)
{ {
listbox.SelectedIndex = 0; treeview.SelectObject(_menus.FirstOrDefault());
} }
private void Button_Click(object sender, RoutedEventArgs e) private void Button_Click(object sender, RoutedEventArgs e)
@@ -74,17 +133,33 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo
ContentControl.Content = control; ContentControl.Content = control;
} }
else else
ContentControl.Content = null; {
ContentControl.Content = new Controls.NotDoneYetControl();
}
} }
private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e) private void treeview_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{ {
if (!IsLoaded) if (!IsLoaded)
return; return;
var tag = listbox.SelectedItem as string; if (e.NewValue is MenuItemViewModel menuItemViewModel && menuItemViewModel.Children == null)
{
ShowContent(tag); ShowContent(menuItemViewModel.Title);
}
} }
} }
}
public class MenuItemViewModel
{
public string Title
{
get; set;
}
public List<MenuItemViewModel> Children
{
get; set;
}
}
}

View File

@@ -12,26 +12,26 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels
{ {
Title = "Reconnect links"; Title = "Reconnect links";
Info = "An example of reconnecting links to the closest ports."; Info = "An example of reconnecting links to the closest ports.";
_service.ColorViewModel.FillColor.Color = System.Windows.Media.Colors.Orange;
DiagramViewModel = new DiagramViewModel(); DiagramViewModel = new DiagramViewModel();
DiagramViewModel.PageSizeType = PageSizeType.Custom; DiagramViewModel.PageSizeType = PageSizeType.Custom;
DiagramViewModel.PageSize = new Size(double.NaN, double.NaN); DiagramViewModel.PageSize = new Size(double.NaN, double.NaN);
DiagramViewModel.ColorViewModel = new ColorViewModel();
DiagramViewModel.ColorViewModel.FillColor.Color = System.Windows.Media.Colors.Orange;
DefaultDesignerItemViewModel node1 = new DefaultDesignerItemViewModel() { Left = 50, Top = 50, Text = "1" }; DefaultDesignerItemViewModel node1 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 50, Top = 50, Text = "1" };
DiagramViewModel.DirectAddItemCommand.Execute(node1); DiagramViewModel.DirectAddItemCommand.Execute(node1);
DefaultDesignerItemViewModel node2 = new DefaultDesignerItemViewModel() { Left = 300, Top = 300, Text = "2" }; DefaultDesignerItemViewModel node2 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 300, Top = 300, Text = "2" };
DiagramViewModel.DirectAddItemCommand.Execute(node2); DiagramViewModel.DirectAddItemCommand.Execute(node2);
DefaultDesignerItemViewModel node3 = new DefaultDesignerItemViewModel() { Left = 300, Top = 50, Text = "3" }; DefaultDesignerItemViewModel node3 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 300, Top = 50, Text = "3" };
DiagramViewModel.DirectAddItemCommand.Execute(node3); DiagramViewModel.DirectAddItemCommand.Execute(node3);
ConnectionViewModel connector1 = new ConnectionViewModel(node1.RightConnector, node2.LeftConnector, DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal); ConnectionViewModel connector1 = new ConnectionViewModel(DiagramViewModel, node1.RightConnector, node2.LeftConnector, DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal);
DiagramViewModel.DirectAddItemCommand.Execute(connector1); DiagramViewModel.DirectAddItemCommand.Execute(connector1);
ConnectionViewModel connector2 = new ConnectionViewModel(node2.RightConnector, node3.RightConnector, DrawMode.ConnectingLineStraight, RouterMode.RouterOrthogonal); ConnectionViewModel connector2 = new ConnectionViewModel(DiagramViewModel, node2.RightConnector, node3.RightConnector, DrawMode.ConnectingLineStraight, RouterMode.RouterOrthogonal);
DiagramViewModel.DirectAddItemCommand.Execute(connector2); DiagramViewModel.DirectAddItemCommand.Execute(connector2);
ReconnectLinksCommand = new SimpleCommand(ReconnectLinks); ReconnectLinksCommand = new SimpleCommand(ReconnectLinks);

View File

@@ -0,0 +1,43 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels
{
class LineAnimationViewModel : BaseViewModel
{
public LineAnimationViewModel()
{
Title = "Line Animation";
Info = "Line path motion animationr.";
DiagramViewModel = new DiagramViewModel();
DiagramViewModel.PageSizeType = PageSizeType.Custom;
DiagramViewModel.PageSize = new Size(double.NaN, double.NaN);
DiagramViewModel.ColorViewModel = new ColorViewModel();
DiagramViewModel.ColorViewModel.FillColor.Color = System.Windows.Media.Colors.Orange;
DefaultDesignerItemViewModel node1 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 50, Top = 50, Text = "1" };
DiagramViewModel.DirectAddItemCommand.Execute(node1);
DefaultDesignerItemViewModel node2 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 300, Top = 300, Text = "2" };
DiagramViewModel.DirectAddItemCommand.Execute(node2);
DefaultDesignerItemViewModel node3 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 300, Top = 50, Text = "3" };
DiagramViewModel.DirectAddItemCommand.Execute(node3);
ConnectionViewModel connector1 = new ConnectionViewModel(DiagramViewModel, node1.RightConnector, node2.LeftConnector, DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal);
connector1.ColorViewModel.LineDashStyle = LineDashStyle.Dash1;
connector1.ColorViewModel.LineAnimation = LineAnimation.DashAnimation;
DiagramViewModel.DirectAddItemCommand.Execute(connector1);
ConnectionViewModel connector2 = new ConnectionViewModel(DiagramViewModel, node2.RightConnector, node3.RightConnector, DrawMode.ConnectingLineStraight, RouterMode.RouterOrthogonal);
connector2.ColorViewModel.LineDashStyle = LineDashStyle.Dash1;
connector2.ColorViewModel.LineAnimation = LineAnimation.DashAnimation;
DiagramViewModel.DirectAddItemCommand.Execute(connector2);
DiagramViewModel.ClearSelectedItemsCommand.Execute(null);
}
}
}

View File

@@ -0,0 +1,41 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels
{
class PathAnimationViewModel : BaseViewModel
{
public PathAnimationViewModel()
{
Title = "Path Animation";
Info = "Line flow motion animation.";
DiagramViewModel = new DiagramViewModel();
DiagramViewModel.PageSizeType = PageSizeType.Custom;
DiagramViewModel.PageSize = new Size(double.NaN, double.NaN);
DiagramViewModel.ColorViewModel = new ColorViewModel();
DiagramViewModel.ColorViewModel.FillColor.Color = System.Windows.Media.Colors.Orange;
DefaultDesignerItemViewModel node1 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 50, Top = 50, Text = "1" };
DiagramViewModel.DirectAddItemCommand.Execute(node1);
DefaultDesignerItemViewModel node2 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 300, Top = 300, Text = "2" };
DiagramViewModel.DirectAddItemCommand.Execute(node2);
DefaultDesignerItemViewModel node3 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 300, Top = 50, Text = "3" };
DiagramViewModel.DirectAddItemCommand.Execute(node3);
ConnectionViewModel connector1 = new ConnectionViewModel(DiagramViewModel, node1.RightConnector, node2.LeftConnector, DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal);
connector1.ColorViewModel.LineAnimation = LineAnimation.PathAnimation;
DiagramViewModel.DirectAddItemCommand.Execute(connector1);
ConnectionViewModel connector2 = new ConnectionViewModel(DiagramViewModel, node2.RightConnector, node3.RightConnector, DrawMode.ConnectingLineStraight, RouterMode.RouterOrthogonal);
connector2.ColorViewModel.LineAnimation = LineAnimation.PathAnimation;
DiagramViewModel.DirectAddItemCommand.Execute(connector2);
DiagramViewModel.ClearSelectedItemsCommand.Execute(null);
}
}
}

View File

@@ -6,14 +6,6 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels
{ {
class BaseViewModel : BindableBase class BaseViewModel : BindableBase
{ {
protected IDiagramServiceProvider _service
{
get
{
return DiagramServicesProvider.Instance.Provider;
}
}
public DiagramViewModel DiagramViewModel public DiagramViewModel DiagramViewModel
{ {
get; set; get; set;
@@ -28,15 +20,5 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels
{ {
get; set; get; set;
} }
public int Index
{
get; set;
}
public int ParentIndex
{
get; set;
}
} }
} }

View File

@@ -6,29 +6,29 @@ using System.Windows;
namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels
{ {
class ThickLinkViewModel : BaseViewModel class CustomLinkViewModel : BaseViewModel
{ {
public ThickLinkViewModel() public CustomLinkViewModel()
{ {
Title = "Custom link"; Title = "Custom link";
Info = "Creating your own custom links is very easy!"; Info = "Creating your own custom links is very easy!";
_service.ColorViewModel.FillColor.Color = System.Windows.Media.Colors.Orange;
DiagramViewModel = new DiagramViewModel(); DiagramViewModel = new DiagramViewModel();
DiagramViewModel.PageSizeType = PageSizeType.Custom; DiagramViewModel.PageSizeType = PageSizeType.Custom;
DiagramViewModel.PageSize = new Size(double.NaN, double.NaN); DiagramViewModel.PageSize = new Size(double.NaN, double.NaN);
DiagramViewModel.ColorViewModel = new ColorViewModel();
DiagramViewModel.ColorViewModel.FillColor.Color = System.Windows.Media.Colors.Orange;
DefaultDesignerItemViewModel node1 = new DefaultDesignerItemViewModel() { Left = 50, Top = 50, Text = "1" }; DefaultDesignerItemViewModel node1 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 50, Top = 50, Text = "1" };
DiagramViewModel.DirectAddItemCommand.Execute(node1); DiagramViewModel.DirectAddItemCommand.Execute(node1);
DefaultDesignerItemViewModel node2 = new DefaultDesignerItemViewModel() { Left = 300, Top = 300, Text = "2" }; DefaultDesignerItemViewModel node2 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 300, Top = 300, Text = "2" };
DiagramViewModel.DirectAddItemCommand.Execute(node2); DiagramViewModel.DirectAddItemCommand.Execute(node2);
DefaultDesignerItemViewModel node3 = new DefaultDesignerItemViewModel() { Left = 300, Top = 50, Text = "3" }; DefaultDesignerItemViewModel node3 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 300, Top = 50, Text = "3" };
DiagramViewModel.DirectAddItemCommand.Execute(node3); DiagramViewModel.DirectAddItemCommand.Execute(node3);
ConnectionViewModel connector1 = new ConnectionViewModel(node1.RightConnector, node2.LeftConnector, DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal); ConnectionViewModel connector1 = new ConnectionViewModel(DiagramViewModel, node1.RightConnector, node2.LeftConnector, DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal);
connector1.ColorViewModel.LineWidth = 6; connector1.ColorViewModel.LineWidth = 6;
connector1.ColorViewModel.LineColor.BrushType = BrushType.LinearGradientBrush; connector1.ColorViewModel.LineColor.BrushType = BrushType.LinearGradientBrush;
connector1.ColorViewModel.LineColor.GradientStop = new ObservableCollection<GradientStop>(); connector1.ColorViewModel.LineColor.GradientStop = new ObservableCollection<GradientStop>();
@@ -36,7 +36,7 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels
connector1.ColorViewModel.LineColor.GradientStop.Add(new GradientStop(System.Windows.Media.Colors.Gray, 1)); connector1.ColorViewModel.LineColor.GradientStop.Add(new GradientStop(System.Windows.Media.Colors.Gray, 1));
DiagramViewModel.DirectAddItemCommand.Execute(connector1); DiagramViewModel.DirectAddItemCommand.Execute(connector1);
ConnectionViewModel connector2 = new ConnectionViewModel(node2.RightConnector, node3.RightConnector, DrawMode.ConnectingLineStraight, RouterMode.RouterOrthogonal); ConnectionViewModel connector2 = new ConnectionViewModel(DiagramViewModel, node2.RightConnector, node3.RightConnector, DrawMode.ConnectingLineStraight, RouterMode.RouterOrthogonal);
connector2.ColorViewModel.LineWidth = 6; connector2.ColorViewModel.LineWidth = 6;
connector2.ColorViewModel.LineColor.Color = System.Windows.Media.Colors.Blue; connector2.ColorViewModel.LineColor.Color = System.Windows.Media.Colors.Blue;
DiagramViewModel.DirectAddItemCommand.Execute(connector2); DiagramViewModel.DirectAddItemCommand.Execute(connector2);

View File

@@ -13,13 +13,13 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels
Title = "Custom node"; Title = "Custom node";
Info = "Creating your own custom design is very easy!"; Info = "Creating your own custom design is very easy!";
//_service.ColorViewModel.FillColor.Color = System.Windows.Media.Colors.Orange;
DiagramViewModel = new DiagramViewModel(); DiagramViewModel = new DiagramViewModel();
DiagramViewModel.CellHorizontalAlignment = CellHorizontalAlignment.Center; DiagramViewModel.CellHorizontalAlignment = CellHorizontalAlignment.Center;
DiagramViewModel.CellVerticalAlignment = CellVerticalAlignment.Center; DiagramViewModel.CellVerticalAlignment = CellVerticalAlignment.Center;
DiagramViewModel.PageSizeType = PageSizeType.Custom; DiagramViewModel.PageSizeType = PageSizeType.Custom;
DiagramViewModel.PageSize = new Size(double.NaN, double.NaN); DiagramViewModel.PageSize = new Size(double.NaN, double.NaN);
DiagramViewModel.ColorViewModel = new ColorViewModel();
DiagramViewModel.ColorViewModel.FillColor.Color = System.Windows.Media.Colors.Orange;
DefaultDesignerItemViewModel node1 = new DefaultDesignerItemViewModel() { Left = 50, Top = 50, Text = "1" }; DefaultDesignerItemViewModel node1 = new DefaultDesignerItemViewModel() { Left = 50, Top = 50, Text = "1" };
DiagramViewModel.DirectAddItemCommand.Execute(node1); DiagramViewModel.DirectAddItemCommand.Execute(node1);
@@ -42,7 +42,12 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels
public class CustomDesignerItemViewModel : DesignerItemViewModelBase public class CustomDesignerItemViewModel : DesignerItemViewModelBase
{ {
public CustomDesignerItemViewModel() : base() public CustomDesignerItemViewModel() : this(null)
{
}
public CustomDesignerItemViewModel(IDiagramViewModel root) : base(root)
{ {
} }
@@ -62,9 +67,9 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels
return new DesignerItemBase(this, Answer); return new DesignerItemBase(this, Answer);
} }
protected override void Init() protected override void Init(IDiagramViewModel root)
{ {
base.Init(); base.Init(root);
this.ItemWidth = 150; this.ItemWidth = 150;
this.ItemHeight = 80; this.ItemHeight = 80;
@@ -77,9 +82,9 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels
connectors.Add(new FullyCreatedConnectorInfo(this, ConnectorOrientation.Bottom)); connectors.Add(new FullyCreatedConnectorInfo(this, ConnectorOrientation.Bottom));
} }
protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase) protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
{ {
base.LoadDesignerItemViewModel(root, designerbase); base.LoadDesignerItemViewModel(designerbase);
if (designerbase is DesignerItemBase designer) if (designerbase is DesignerItemBase designer)
{ {

View File

@@ -12,25 +12,25 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels
Title = "Simple"; Title = "Simple";
Info = "A simple example of AIStudio.Wpf.DiagramDesigner."; Info = "A simple example of AIStudio.Wpf.DiagramDesigner.";
_service.ColorViewModel.FillColor.Color = System.Windows.Media.Colors.Orange;
DiagramViewModel = new DiagramViewModel(); DiagramViewModel = new DiagramViewModel();
DiagramViewModel.PageSizeType = PageSizeType.Custom; DiagramViewModel.PageSizeType = PageSizeType.Custom;
DiagramViewModel.PageSize = new Size(double.NaN, double.NaN); DiagramViewModel.PageSize = new Size(double.NaN, double.NaN);
DiagramViewModel.ColorViewModel = new ColorViewModel();
DiagramViewModel.ColorViewModel.FillColor.Color = System.Windows.Media.Colors.Orange;
DefaultDesignerItemViewModel node1 = new DefaultDesignerItemViewModel() { Left = 50, Top = 50, Text = "1" }; DefaultDesignerItemViewModel node1 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 50, Top = 50, Text = "1" };
DiagramViewModel.DirectAddItemCommand.Execute(node1); DiagramViewModel.DirectAddItemCommand.Execute(node1);
DefaultDesignerItemViewModel node2 = new DefaultDesignerItemViewModel() { Left = 300, Top = 300, Text = "2" }; DefaultDesignerItemViewModel node2 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 300, Top = 300, Text = "2" };
DiagramViewModel.DirectAddItemCommand.Execute(node2); DiagramViewModel.DirectAddItemCommand.Execute(node2);
DefaultDesignerItemViewModel node3 = new DefaultDesignerItemViewModel() { Left = 300, Top = 50, Text = "3" }; DefaultDesignerItemViewModel node3 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 300, Top = 50, Text = "3" };
DiagramViewModel.DirectAddItemCommand.Execute(node3); DiagramViewModel.DirectAddItemCommand.Execute(node3);
ConnectionViewModel connector1 = new ConnectionViewModel(node1.RightConnector, node2.LeftConnector, DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal); ConnectionViewModel connector1 = new ConnectionViewModel(DiagramViewModel, node1.RightConnector, node2.LeftConnector, DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal);
DiagramViewModel.DirectAddItemCommand.Execute(connector1); DiagramViewModel.DirectAddItemCommand.Execute(connector1);
ConnectionViewModel connector2 = new ConnectionViewModel(node2.RightConnector, node3.RightConnector, DrawMode.ConnectingLineStraight, RouterMode.RouterOrthogonal); ConnectionViewModel connector2 = new ConnectionViewModel(DiagramViewModel, node2.RightConnector, node3.RightConnector, DrawMode.ConnectingLineStraight, RouterMode.RouterOrthogonal);
DiagramViewModel.DirectAddItemCommand.Execute(connector2); DiagramViewModel.DirectAddItemCommand.Execute(connector2);
DiagramViewModel.GroupCommand.Execute(new List<DesignerItemViewModelBase> { node1, node2 }); DiagramViewModel.GroupCommand.Execute(new List<DesignerItemViewModelBase> { node1, node2 });

View File

@@ -12,52 +12,52 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels
Title = "Link Labels"; Title = "Link Labels";
Info = "Labels help you show more information through out a link. You can specify a distance or an offset." + Info = "Labels help you show more information through out a link. You can specify a distance or an offset." +
"The content of the labels is still limited because of Blazor's poor SVG support."; "The content of the labels is still limited because of Blazor's poor SVG support.";
_service.ColorViewModel.FillColor.Color = System.Windows.Media.Colors.Orange;
DiagramViewModel = new DiagramViewModel(); DiagramViewModel = new DiagramViewModel();
DiagramViewModel.PageSizeType = PageSizeType.Custom; DiagramViewModel.PageSizeType = PageSizeType.Custom;
DiagramViewModel.PageSize = new Size(double.NaN, double.NaN); DiagramViewModel.PageSize = new Size(double.NaN, double.NaN);
DiagramViewModel.ColorViewModel = new ColorViewModel();
DiagramViewModel.ColorViewModel.FillColor.Color = System.Windows.Media.Colors.Orange;
DefaultDesignerItemViewModel node1 = new DefaultDesignerItemViewModel() { Left = 50, Top = 50 }; DefaultDesignerItemViewModel node1 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 50, Top = 50, Text = "1" };
DiagramViewModel.DirectAddItemCommand.Execute(node1); DiagramViewModel.DirectAddItemCommand.Execute(node1);
DefaultDesignerItemViewModel node2 = new DefaultDesignerItemViewModel() { Left = 400, Top = 50 }; DefaultDesignerItemViewModel node2 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 400, Top = 50, Text = "2" };
DiagramViewModel.DirectAddItemCommand.Execute(node2); DiagramViewModel.DirectAddItemCommand.Execute(node2);
ConnectionViewModel connector1 = new ConnectionViewModel(node1.RightConnector, node2.LeftConnector); ConnectionViewModel connector1 = new ConnectionViewModel(DiagramViewModel, node1.RightConnector, node2.LeftConnector);
connector1.AddLabel("Content"); connector1.AddLabel("Content");
DiagramViewModel.DirectAddItemCommand.Execute(connector1); DiagramViewModel.DirectAddItemCommand.Execute(connector1);
node1 = new DefaultDesignerItemViewModel() { Left = 50, Top = 160, Text = "1" }; node1 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 50, Top = 160, Text = "1" };
DiagramViewModel.DirectAddItemCommand.Execute(node1); DiagramViewModel.DirectAddItemCommand.Execute(node1);
node2 = new DefaultDesignerItemViewModel() { Left = 400, Top = 160, Text = "2" }; node2 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 400, Top = 160, Text = "2" };
DiagramViewModel.DirectAddItemCommand.Execute(node2); DiagramViewModel.DirectAddItemCommand.Execute(node2);
connector1 = new ConnectionViewModel(node1.RightConnector, node2.LeftConnector); connector1 = new ConnectionViewModel(DiagramViewModel, node1.RightConnector, node2.LeftConnector);
connector1.AddLabel("0.25", 0.3); connector1.AddLabel("0.25", 0.3);
connector1.AddLabel("0.75", 0.7); connector1.AddLabel("0.75", 0.7);
DiagramViewModel.DirectAddItemCommand.Execute(connector1); DiagramViewModel.DirectAddItemCommand.Execute(connector1);
node1 = new DefaultDesignerItemViewModel() { Left = 50, Top = 270, Text = "1" }; node1 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 50, Top = 270, Text = "1" };
DiagramViewModel.DirectAddItemCommand.Execute(node1); DiagramViewModel.DirectAddItemCommand.Execute(node1);
node2 = new DefaultDesignerItemViewModel() { Left = 400, Top = 270, Text = "2" }; node2 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 400, Top = 270, Text = "2" };
DiagramViewModel.DirectAddItemCommand.Execute(node2); DiagramViewModel.DirectAddItemCommand.Execute(node2);
connector1 = new ConnectionViewModel(node1.RightConnector, node2.LeftConnector); connector1 = new ConnectionViewModel(DiagramViewModel, node1.RightConnector, node2.LeftConnector);
connector1.AddLabel("50", 50); connector1.AddLabel("50", 50);
connector1.AddLabel("-50", -50); connector1.AddLabel("-50", -50);
DiagramViewModel.DirectAddItemCommand.Execute(connector1); DiagramViewModel.DirectAddItemCommand.Execute(connector1);
node1 = new DefaultDesignerItemViewModel() { Left = 50, Top = 380, Text = "1" }; node1 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 50, Top = 380, Text = "1" };
DiagramViewModel.DirectAddItemCommand.Execute(node1); DiagramViewModel.DirectAddItemCommand.Execute(node1);
node2 = new DefaultDesignerItemViewModel() { Left = 400, Top = 380, Text = "2" }; node2 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 400, Top = 380, Text = "2" };
DiagramViewModel.DirectAddItemCommand.Execute(node2); DiagramViewModel.DirectAddItemCommand.Execute(node2);
connector1 = new ConnectionViewModel(node1.RightConnector, node2.LeftConnector); connector1 = new ConnectionViewModel(DiagramViewModel, node1.RightConnector, node2.LeftConnector);
connector1.AddLabel("(0,-20)", 50, new Point(0, -20)); connector1.AddLabel("(0,-20)", 50, new Point(0, -20));
connector1.AddLabel("(0,20)", -50, new Point(0, 20)); connector1.AddLabel("(0,20)", -50, new Point(0, 20));
DiagramViewModel.DirectAddItemCommand.Execute(connector1); DiagramViewModel.DirectAddItemCommand.Execute(connector1);

View File

@@ -12,67 +12,67 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels
Title = "Link Markers"; Title = "Link Markers";
Info = "Markers are SVG Paths that you can put at the beginning or at the end of your links."; Info = "Markers are SVG Paths that you can put at the beginning or at the end of your links.";
_service.ColorViewModel.FillColor.Color = System.Windows.Media.Colors.Orange;
DiagramViewModel = new DiagramViewModel(); DiagramViewModel = new DiagramViewModel();
DiagramViewModel.PageSizeType = PageSizeType.Custom; DiagramViewModel.PageSizeType = PageSizeType.Custom;
DiagramViewModel.PageSize = new Size(double.NaN, double.NaN); DiagramViewModel.PageSize = new Size(double.NaN, double.NaN);
DiagramViewModel.ColorViewModel = new ColorViewModel();
DiagramViewModel.ColorViewModel.FillColor.Color = System.Windows.Media.Colors.Orange;
DefaultDesignerItemViewModel node1 = new DefaultDesignerItemViewModel() { Left = 50, Top = 50, Text = "1" }; DefaultDesignerItemViewModel node1 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 50, Top = 50, Text = "1" };
DiagramViewModel.DirectAddItemCommand.Execute(node1); DiagramViewModel.DirectAddItemCommand.Execute(node1);
DefaultDesignerItemViewModel node2 = new DefaultDesignerItemViewModel() { Left = 400, Top = 50, Text = "2" }; DefaultDesignerItemViewModel node2 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 400, Top = 50, Text = "2" };
DiagramViewModel.DirectAddItemCommand.Execute(node2); DiagramViewModel.DirectAddItemCommand.Execute(node2);
ConnectionViewModel connector1 = new ConnectionViewModel(node1.RightConnector, node2.LeftConnector); ConnectionViewModel connector1 = new ConnectionViewModel(DiagramViewModel, node1.RightConnector, node2.LeftConnector);
connector1.ShapeViewModel.SourceMarker = LinkMarker.Arrow; connector1.ShapeViewModel.SourceMarker = LinkMarker.Arrow;
connector1.ShapeViewModel.SinkMarker = LinkMarker.Arrow; connector1.ShapeViewModel.SinkMarker = LinkMarker.Arrow;
connector1.AddLabel("Arrow"); connector1.AddLabel("Arrow");
DiagramViewModel.DirectAddItemCommand.Execute(connector1); DiagramViewModel.DirectAddItemCommand.Execute(connector1);
node1 = new DefaultDesignerItemViewModel() { Left = 50, Top = 160, Text = "1" }; node1 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 50, Top = 160, Text = "1" };
DiagramViewModel.DirectAddItemCommand.Execute(node1); DiagramViewModel.DirectAddItemCommand.Execute(node1);
node2 = new DefaultDesignerItemViewModel() { Left = 400, Top = 160, Text = "2" }; node2 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 400, Top = 160, Text = "2" };
DiagramViewModel.DirectAddItemCommand.Execute(node2); DiagramViewModel.DirectAddItemCommand.Execute(node2);
connector1 = new ConnectionViewModel(node1.RightConnector, node2.LeftConnector); connector1 = new ConnectionViewModel(DiagramViewModel, node1.RightConnector, node2.LeftConnector);
connector1.ShapeViewModel.SourceMarker = LinkMarker.Circle; connector1.ShapeViewModel.SourceMarker = LinkMarker.Circle;
connector1.ShapeViewModel.SinkMarker = LinkMarker.Circle; connector1.ShapeViewModel.SinkMarker = LinkMarker.Circle;
connector1.AddLabel("Circle"); connector1.AddLabel("Circle");
DiagramViewModel.DirectAddItemCommand.Execute(connector1); DiagramViewModel.DirectAddItemCommand.Execute(connector1);
node1 = new DefaultDesignerItemViewModel() { Left = 50, Top = 270, Text = "1" }; node1 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 50, Top = 270, Text = "1" };
DiagramViewModel.DirectAddItemCommand.Execute(node1); DiagramViewModel.DirectAddItemCommand.Execute(node1);
node2 = new DefaultDesignerItemViewModel() { Left = 400, Top = 270, Text = "2" }; node2 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 400, Top = 270, Text = "2" };
DiagramViewModel.DirectAddItemCommand.Execute(node2); DiagramViewModel.DirectAddItemCommand.Execute(node2);
connector1 = new ConnectionViewModel(node1.RightConnector, node2.LeftConnector); connector1 = new ConnectionViewModel(DiagramViewModel, node1.RightConnector, node2.LeftConnector);
connector1.ShapeViewModel.SourceMarker = LinkMarker.Square; connector1.ShapeViewModel.SourceMarker = LinkMarker.Square;
connector1.ShapeViewModel.SinkMarker = LinkMarker.Square; connector1.ShapeViewModel.SinkMarker = LinkMarker.Square;
connector1.AddLabel("Square"); connector1.AddLabel("Square");
DiagramViewModel.DirectAddItemCommand.Execute(connector1); DiagramViewModel.DirectAddItemCommand.Execute(connector1);
node1 = new DefaultDesignerItemViewModel() { Left = 50, Top = 380, Text = "1" }; node1 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 50, Top = 380, Text = "1" };
DiagramViewModel.DirectAddItemCommand.Execute(node1); DiagramViewModel.DirectAddItemCommand.Execute(node1);
node2 = new DefaultDesignerItemViewModel() { Left = 400, Top = 380, Text = "2" }; node2 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 400, Top = 380, Text = "2" };
DiagramViewModel.DirectAddItemCommand.Execute(node2); DiagramViewModel.DirectAddItemCommand.Execute(node2);
connector1 = new ConnectionViewModel(node1.RightConnector, node2.LeftConnector); connector1 = new ConnectionViewModel(DiagramViewModel, node1.RightConnector, node2.LeftConnector);
connector1.ShapeViewModel.SourceMarker = LinkMarker.NewRectangle(10, 20); connector1.ShapeViewModel.SourceMarker = LinkMarker.NewRectangle(10, 20);
connector1.ShapeViewModel.SinkMarker = LinkMarker.NewArrow(20, 10); connector1.ShapeViewModel.SinkMarker = LinkMarker.NewArrow(20, 10);
connector1.AddLabel("Factory"); connector1.AddLabel("Factory");
DiagramViewModel.DirectAddItemCommand.Execute(connector1); DiagramViewModel.DirectAddItemCommand.Execute(connector1);
node1 = new DefaultDesignerItemViewModel() { Left = 50, Top = 490, Text = "1" }; node1 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 50, Top = 490, Text = "1" };
DiagramViewModel.DirectAddItemCommand.Execute(node1); DiagramViewModel.DirectAddItemCommand.Execute(node1);
node2 = new DefaultDesignerItemViewModel() { Left = 400, Top = 490, Text = "2" }; node2 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 400, Top = 490, Text = "2" };
DiagramViewModel.DirectAddItemCommand.Execute(node2); DiagramViewModel.DirectAddItemCommand.Execute(node2);
connector1 = new ConnectionViewModel(node1.RightConnector, node2.LeftConnector); connector1 = new ConnectionViewModel(DiagramViewModel, node1.RightConnector, node2.LeftConnector);
connector1.ShapeViewModel.SourceMarker = new LinkMarker("M 0 -8 L 3 -8 3 8 0 8 z M 4 -8 7 -8 7 8 4 8 z M 8 -8 16 0 8 8 z", 16, ArrowPathStyle.Arrow, ArrowSizeStyle.ExtraLarge); connector1.ShapeViewModel.SourceMarker = new LinkMarker("M 0 -8 L 3 -8 3 8 0 8 z M 4 -8 7 -8 7 8 4 8 z M 8 -8 16 0 8 8 z", 16, ArrowPathStyle.Arrow, ArrowSizeStyle.ExtraLarge);
connector1.ShapeViewModel.SinkMarker = new LinkMarker("M 0 -8 L 8 -8 4 0 8 8 0 8 4 0 z", 8, ArrowPathStyle.Arrow, ArrowSizeStyle.Small); connector1.ShapeViewModel.SinkMarker = new LinkMarker("M 0 -8 L 8 -8 4 0 8 8 0 8 4 0 z", 8, ArrowPathStyle.Arrow, ArrowSizeStyle.Small);
connector1.AddLabel("Custom"); connector1.AddLabel("Custom");

View File

@@ -13,26 +13,26 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels
Info = "Path generators are functions that take as input the calculated route and output SVG paths, " + Info = "Path generators are functions that take as input the calculated route and output SVG paths, " +
"alongside the markers positions and their angles. There are currently two generators: Straight and Smooth."; "alongside the markers positions and their angles. There are currently two generators: Straight and Smooth.";
_service.ColorViewModel.FillColor.Color = System.Windows.Media.Colors.Orange;
DiagramViewModel = new DiagramViewModel(); DiagramViewModel = new DiagramViewModel();
DiagramViewModel.PageSizeType = PageSizeType.Custom; DiagramViewModel.PageSizeType = PageSizeType.Custom;
DiagramViewModel.PageSize = new Size(double.NaN, double.NaN); DiagramViewModel.PageSize = new Size(double.NaN, double.NaN);
DiagramViewModel.ColorViewModel = new ColorViewModel();
DiagramViewModel.ColorViewModel.FillColor.Color = System.Windows.Media.Colors.Orange;
DefaultDesignerItemViewModel node1 = new DefaultDesignerItemViewModel() { Left = 50, Top = 80, Text = "1" }; DefaultDesignerItemViewModel node1 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 50, Top = 80, Text = "1" };
DiagramViewModel.DirectAddItemCommand.Execute(node1); DiagramViewModel.DirectAddItemCommand.Execute(node1);
DefaultDesignerItemViewModel node2 = new DefaultDesignerItemViewModel() { Left = 300, Top = 350, Text = "2" }; DefaultDesignerItemViewModel node2 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 300, Top = 350, Text = "2" };
DiagramViewModel.DirectAddItemCommand.Execute(node2); DiagramViewModel.DirectAddItemCommand.Execute(node2);
DefaultDesignerItemViewModel node3 = new DefaultDesignerItemViewModel() { Left = 400, Top = 100, Text = "3" }; DefaultDesignerItemViewModel node3 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 400, Top = 100, Text = "3" };
DiagramViewModel.DirectAddItemCommand.Execute(node3); DiagramViewModel.DirectAddItemCommand.Execute(node3);
ConnectionViewModel connector1 = new ConnectionViewModel(node1.RightConnector, node2.LeftConnector, DrawMode.ConnectingLineStraight, RouterMode.RouterNormal); ConnectionViewModel connector1 = new ConnectionViewModel(DiagramViewModel, node1.RightConnector, node2.LeftConnector, DrawMode.ConnectingLineStraight, RouterMode.RouterNormal);
connector1.AddLabel("Straight"); connector1.AddLabel("Straight");
DiagramViewModel.DirectAddItemCommand.Execute(connector1); DiagramViewModel.DirectAddItemCommand.Execute(connector1);
ConnectionViewModel connector2 = new ConnectionViewModel(node2.RightConnector, node3.LeftConnector, DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal); ConnectionViewModel connector2 = new ConnectionViewModel(DiagramViewModel, node2.RightConnector, node3.LeftConnector, DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal);
connector2.AddLabel("Smooth"); connector2.AddLabel("Smooth");
DiagramViewModel.DirectAddItemCommand.Execute(connector2); DiagramViewModel.DirectAddItemCommand.Execute(connector2);

View File

@@ -13,26 +13,26 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels
Info = "Routers are functions that take as input the link's vertices and can add points in between. " + Info = "Routers are functions that take as input the link's vertices and can add points in between. " +
"There are currently two routers: Normal and Orthogonal."; "There are currently two routers: Normal and Orthogonal.";
_service.ColorViewModel.FillColor.Color = System.Windows.Media.Colors.Orange;
DiagramViewModel = new DiagramViewModel(); DiagramViewModel = new DiagramViewModel();
DiagramViewModel.PageSizeType = PageSizeType.Custom; DiagramViewModel.PageSizeType = PageSizeType.Custom;
DiagramViewModel.PageSize = new Size(double.NaN, double.NaN); DiagramViewModel.PageSize = new Size(double.NaN, double.NaN);
DiagramViewModel.ColorViewModel = new ColorViewModel();
DiagramViewModel.ColorViewModel.FillColor.Color = System.Windows.Media.Colors.Orange;
DefaultDesignerItemViewModel node1 = new DefaultDesignerItemViewModel() { Left = 50, Top = 80, Text = "1" }; DefaultDesignerItemViewModel node1 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 50, Top = 80, Text = "1" };
DiagramViewModel.DirectAddItemCommand.Execute(node1); DiagramViewModel.DirectAddItemCommand.Execute(node1);
DefaultDesignerItemViewModel node2 = new DefaultDesignerItemViewModel() { Left = 300, Top = 350, Text = "2" }; DefaultDesignerItemViewModel node2 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 300, Top = 350, Text = "2" };
DiagramViewModel.DirectAddItemCommand.Execute(node2); DiagramViewModel.DirectAddItemCommand.Execute(node2);
DefaultDesignerItemViewModel node3 = new DefaultDesignerItemViewModel() { Left = 350, Top = 100, Text = "3" }; DefaultDesignerItemViewModel node3 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 350, Top = 100, Text = "3" };
DiagramViewModel.DirectAddItemCommand.Execute(node3); DiagramViewModel.DirectAddItemCommand.Execute(node3);
ConnectionViewModel connector1 = new ConnectionViewModel(node1.RightConnector, node2.LeftConnector, DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal); ConnectionViewModel connector1 = new ConnectionViewModel(DiagramViewModel, node1.RightConnector, node2.LeftConnector, DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal);
connector1.AddLabel("Normal"); connector1.AddLabel("Normal");
DiagramViewModel.DirectAddItemCommand.Execute(connector1); DiagramViewModel.DirectAddItemCommand.Execute(connector1);
ConnectionViewModel connector2 = new ConnectionViewModel(node2.RightConnector, node3.LeftConnector, DrawMode.ConnectingLineStraight, RouterMode.RouterOrthogonal); ConnectionViewModel connector2 = new ConnectionViewModel(DiagramViewModel, node2.RightConnector, node3.LeftConnector, DrawMode.ConnectingLineStraight, RouterMode.RouterOrthogonal);
connector2.AddLabel("Orthogonal"); connector2.AddLabel("Orthogonal");
DiagramViewModel.DirectAddItemCommand.Execute(connector2); DiagramViewModel.DirectAddItemCommand.Execute(connector2);

View File

@@ -12,20 +12,20 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels
Title = "Link Snapping"; Title = "Link Snapping";
Info = "While dragging a new link, it will try to find (and link) to the closest target within a radius."; Info = "While dragging a new link, it will try to find (and link) to the closest target within a radius.";
_service.ColorViewModel.FillColor.Color = System.Windows.Media.Colors.Orange;
DiagramViewModel = new DiagramViewModel(); DiagramViewModel = new DiagramViewModel();
DiagramViewModel.PageSizeType = PageSizeType.Custom; DiagramViewModel.PageSizeType = PageSizeType.Custom;
DiagramViewModel.PageSize = new Size(double.NaN, double.NaN); DiagramViewModel.PageSize = new Size(double.NaN, double.NaN);
DiagramViewModel.DrawModeViewModel = new DrawModeViewModel() { EnableSnapping = true }; DiagramViewModel.DrawModeViewModel = new DrawModeViewModel() { EnableSnapping = true };
DiagramViewModel.ColorViewModel = new ColorViewModel();
DiagramViewModel.ColorViewModel.FillColor.Color = System.Windows.Media.Colors.Orange;
DefaultDesignerItemViewModel node1 = new DefaultDesignerItemViewModel() { Left = 50, Top = 50, Text = "1" }; DefaultDesignerItemViewModel node1 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 50, Top = 50, Text = "1" };
DiagramViewModel.DirectAddItemCommand.Execute(node1); DiagramViewModel.DirectAddItemCommand.Execute(node1);
DefaultDesignerItemViewModel node2 = new DefaultDesignerItemViewModel() { Left = 300, Top = 300, Text = "2" }; DefaultDesignerItemViewModel node2 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 300, Top = 300, Text = "2" };
DiagramViewModel.DirectAddItemCommand.Execute(node2); DiagramViewModel.DirectAddItemCommand.Execute(node2);
DefaultDesignerItemViewModel node3 = new DefaultDesignerItemViewModel() { Left = 300, Top = 50, Text = "3" }; DefaultDesignerItemViewModel node3 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 300, Top = 50, Text = "3" };
DiagramViewModel.DirectAddItemCommand.Execute(node3); DiagramViewModel.DirectAddItemCommand.Execute(node3);
DiagramViewModel.ClearSelectedItemsCommand.Execute(null); DiagramViewModel.ClearSelectedItemsCommand.Execute(null);

View File

@@ -12,29 +12,29 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels
Title = "Link Vertices"; Title = "Link Vertices";
Info = "Click on a link to create a vertex. Double click on a vertex to delete it. " + Info = "Click on a link to create a vertex. Double click on a vertex to delete it. " +
"You can drag the vertices around."; "You can drag the vertices around.";
_service.ColorViewModel.FillColor.Color = System.Windows.Media.Colors.Orange;
DiagramViewModel = new DiagramViewModel(); DiagramViewModel = new DiagramViewModel();
DiagramViewModel.PageSizeType = PageSizeType.Custom; DiagramViewModel.PageSizeType = PageSizeType.Custom;
DiagramViewModel.PageSize = new Size(double.NaN, double.NaN); DiagramViewModel.PageSize = new Size(double.NaN, double.NaN);
DiagramViewModel.ColorViewModel = new ColorViewModel();
DiagramViewModel.ColorViewModel.FillColor.Color = System.Windows.Media.Colors.Orange;
DefaultDesignerItemViewModel node1 = new DefaultDesignerItemViewModel() { Left = 50, Top = 80, Text = "1" }; DefaultDesignerItemViewModel node1 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 50, Top = 80, Text = "1" };
DiagramViewModel.DirectAddItemCommand.Execute(node1); DiagramViewModel.DirectAddItemCommand.Execute(node1);
DefaultDesignerItemViewModel node2 = new DefaultDesignerItemViewModel() { Left = 200, Top = 350, Text = "2" }; DefaultDesignerItemViewModel node2 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 200, Top = 350, Text = "2" };
DiagramViewModel.DirectAddItemCommand.Execute(node2); DiagramViewModel.DirectAddItemCommand.Execute(node2);
DefaultDesignerItemViewModel node3 = new DefaultDesignerItemViewModel() { Left = 400, Top = 100, Text = "3" }; DefaultDesignerItemViewModel node3 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 400, Top = 100, Text = "3" };
DiagramViewModel.DirectAddItemCommand.Execute(node3); DiagramViewModel.DirectAddItemCommand.Execute(node3);
ConnectionViewModel connector1 = new ConnectionViewModel(node1.RightConnector, node2.LeftConnector, DrawMode.ConnectingLineStraight, RouterMode.RouterNormal); ConnectionViewModel connector1 = new ConnectionViewModel(DiagramViewModel, node1.RightConnector, node2.LeftConnector, DrawMode.ConnectingLineStraight, RouterMode.RouterNormal);
connector1.AddLabel("Content"); connector1.AddLabel("Content");
connector1.AddVertex(new Point(221, 112.5)); connector1.AddVertex(new Point(221, 112.5));
connector1.AddVertex(new Point(111, 291)); connector1.AddVertex(new Point(111, 291));
DiagramViewModel.DirectAddItemCommand.Execute(connector1); DiagramViewModel.DirectAddItemCommand.Execute(connector1);
ConnectionViewModel connector2 = new ConnectionViewModel(node2.RightConnector, node3.LeftConnector, DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal); ConnectionViewModel connector2 = new ConnectionViewModel(DiagramViewModel, node2.RightConnector, node3.LeftConnector, DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal);
connector2.AddLabel("Content"); connector2.AddLabel("Content");
connector2.AddVertex(new Point(400, 324)); connector2.AddVertex(new Point(400, 324));
connector2.AddVertex(new Point(326, 180)); connector2.AddVertex(new Point(326, 180));

View File

@@ -15,35 +15,35 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels
//"All the TOP ports are locked as well, so you can't create links from/to them, but you can from/to the others." + //"All the TOP ports are locked as well, so you can't create links from/to them, but you can from/to the others." +
"Newly created links aren't locked, so they can be deleted."; "Newly created links aren't locked, so they can be deleted.";
_service.ColorViewModel.FillColor.Color = System.Windows.Media.Colors.Orange;
DiagramViewModel = new DiagramViewModel(); DiagramViewModel = new DiagramViewModel();
DiagramViewModel.CellHorizontalAlignment = CellHorizontalAlignment.Center; DiagramViewModel.CellHorizontalAlignment = CellHorizontalAlignment.Center;
DiagramViewModel.CellVerticalAlignment = CellVerticalAlignment.Center; DiagramViewModel.CellVerticalAlignment = CellVerticalAlignment.Center;
DiagramViewModel.PageSizeType = PageSizeType.Custom; DiagramViewModel.PageSizeType = PageSizeType.Custom;
DiagramViewModel.PageSize = new Size(double.NaN, double.NaN); DiagramViewModel.PageSize = new Size(double.NaN, double.NaN);
DiagramViewModel.ColorViewModel = new ColorViewModel();
DiagramViewModel.ColorViewModel.FillColor.Color = System.Windows.Media.Colors.Orange;
DefaultDesignerItemViewModel node1 = new DefaultDesignerItemViewModel() { Left = 50, Top = 50, Text = "1" }; DefaultDesignerItemViewModel node1 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 50, Top = 50, Text = "1" };
//node1.LockObjectViewModel.LockObject.FirstOrDefault(p => p.LockFlag == LockFlag.All).IsChecked = true;//这个也可以 //node1.LockObjectViewModel.LockObject.FirstOrDefault(p => p.LockFlag == LockFlag.All).IsChecked = true;//这个也可以
node1.IsReadOnly = true; node1.IsReadOnly = true;
DiagramViewModel.DirectAddItemCommand.Execute(node1); DiagramViewModel.DirectAddItemCommand.Execute(node1);
DefaultDesignerItemViewModel node2 = new DefaultDesignerItemViewModel() { Left = 300, Top = 300, Text = "2" }; DefaultDesignerItemViewModel node2 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 300, Top = 300, Text = "2" };
//node2.LockObjectViewModel.LockObject.FirstOrDefault(p => p.LockFlag == LockFlag.All).IsChecked = true;//这个也可以 //node2.LockObjectViewModel.LockObject.FirstOrDefault(p => p.LockFlag == LockFlag.All).IsChecked = true;//这个也可以
node2.IsReadOnly = true; node2.IsReadOnly = true;
DiagramViewModel.DirectAddItemCommand.Execute(node2); DiagramViewModel.DirectAddItemCommand.Execute(node2);
DefaultDesignerItemViewModel node3 = new DefaultDesignerItemViewModel() { Left = 300, Top = 50, Text = "3" }; DefaultDesignerItemViewModel node3 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 300, Top = 50, Text = "3" };
//node3.LockObjectViewModel.LockObject.FirstOrDefault(p => p.LockFlag == LockFlag.All).IsChecked = true;//这个也可以 //node3.LockObjectViewModel.LockObject.FirstOrDefault(p => p.LockFlag == LockFlag.All).IsChecked = true;//这个也可以
node3.IsReadOnly = true; node3.IsReadOnly = true;
DiagramViewModel.DirectAddItemCommand.Execute(node3); DiagramViewModel.DirectAddItemCommand.Execute(node3);
ConnectionViewModel connector1 = new ConnectionViewModel(node1.RightConnector, node2.LeftConnector, DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal); ConnectionViewModel connector1 = new ConnectionViewModel(DiagramViewModel, node1.RightConnector, node2.LeftConnector, DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal);
//connector1.LockObjectViewModel.LockObject.FirstOrDefault(p => p.LockFlag == LockFlag.All).IsChecked = true;//这个也可以 //connector1.LockObjectViewModel.LockObject.FirstOrDefault(p => p.LockFlag == LockFlag.All).IsChecked = true;//这个也可以
connector1.IsReadOnly = true; connector1.IsReadOnly = true;
DiagramViewModel.DirectAddItemCommand.Execute(connector1); DiagramViewModel.DirectAddItemCommand.Execute(connector1);
ConnectionViewModel connector2 = new ConnectionViewModel(node2.RightConnector, node3.RightConnector, DrawMode.ConnectingLineStraight, RouterMode.RouterOrthogonal); ConnectionViewModel connector2 = new ConnectionViewModel(DiagramViewModel, node2.RightConnector, node3.RightConnector, DrawMode.ConnectingLineStraight, RouterMode.RouterOrthogonal);
// connector2.LockObjectViewModel.LockObject.FirstOrDefault(p => p.LockFlag == LockFlag.All).IsChecked = true;//这个也可以 // connector2.LockObjectViewModel.LockObject.FirstOrDefault(p => p.LockFlag == LockFlag.All).IsChecked = true;//这个也可以
connector2.IsReadOnly = true; connector2.IsReadOnly = true;
DiagramViewModel.DirectAddItemCommand.Execute(connector2); DiagramViewModel.DirectAddItemCommand.Execute(connector2);

View File

@@ -13,27 +13,27 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels
Title = "Custom node"; Title = "Custom node";
Info = "Creating your own custom design is very easy!"; Info = "Creating your own custom design is very easy!";
//_service.ColorViewModel.FillColor.Color = System.Windows.Media.Colors.Orange;
DiagramViewModel = new DiagramViewModel(); DiagramViewModel = new DiagramViewModel();
DiagramViewModel.CellHorizontalAlignment = CellHorizontalAlignment.Center; DiagramViewModel.CellHorizontalAlignment = CellHorizontalAlignment.Center;
DiagramViewModel.CellVerticalAlignment = CellVerticalAlignment.Center; DiagramViewModel.CellVerticalAlignment = CellVerticalAlignment.Center;
DiagramViewModel.PageSizeType = PageSizeType.Custom; DiagramViewModel.PageSizeType = PageSizeType.Custom;
DiagramViewModel.PageSize = new Size(double.NaN, double.NaN); DiagramViewModel.PageSize = new Size(double.NaN, double.NaN);
DiagramViewModel.ColorViewModel = new ColorViewModel();
DiagramViewModel.ColorViewModel.FillColor.Color = System.Windows.Media.Colors.Orange;
DefaultDesignerItemViewModel node1 = new DefaultDesignerItemViewModel() { Left = 50, Top = 50, Text = "1" }; DefaultDesignerItemViewModel node1 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 50, Top = 50, Text = "1" };
DiagramViewModel.DirectAddItemCommand.Execute(node1); DiagramViewModel.DirectAddItemCommand.Execute(node1);
PathItemViewModel node2 = new PathItemViewModel() { Left = 300, Top = 300, Icon = "M 0 -50 L 50 -50 L 50 -10 A 1 1 0 0 0 50 10 L 50 50 L 0 50 L 0 10 A 1 1 0 0 0 0 -10 Z" }; PathItemViewModel node2 = new PathItemViewModel(DiagramViewModel) { Left = 300, Top = 300, Icon = "M 0 -50 L 50 -50 L 50 -10 A 1 1 0 0 0 50 10 L 50 50 L 0 50 L 0 10 A 1 1 0 0 0 0 -10 Z" };
DiagramViewModel.DirectAddItemCommand.Execute(node2); DiagramViewModel.DirectAddItemCommand.Execute(node2);
PathItemViewModel node3 = new PathItemViewModel() { Left = 300, Top = 50, Icon = "M 0 -50 L 50 -50 L 50 -10 A 1 1 0 0 0 50 10 L 50 50 L 0 50 L 0 10 A 1 1 0 0 0 0 -10 Z" }; PathItemViewModel node3 = new PathItemViewModel(DiagramViewModel) { Left = 300, Top = 50, Icon = "M 0 -50 L 50 -50 L 50 -10 A 1 1 0 0 0 50 10 L 50 50 L 0 50 L 0 10 A 1 1 0 0 0 0 -10 Z" };
DiagramViewModel.DirectAddItemCommand.Execute(node3); DiagramViewModel.DirectAddItemCommand.Execute(node3);
ConnectionViewModel connector1 = new ConnectionViewModel(node1.RightConnector, node2.TopConnector, DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal); ConnectionViewModel connector1 = new ConnectionViewModel(DiagramViewModel, node1.RightConnector, node2.TopConnector, DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal);
DiagramViewModel.DirectAddItemCommand.Execute(connector1); DiagramViewModel.DirectAddItemCommand.Execute(connector1);
ConnectionViewModel connector2 = new ConnectionViewModel(node2.BottomConnector, node3.BottomConnector, DrawMode.ConnectingLineStraight, RouterMode.RouterOrthogonal); ConnectionViewModel connector2 = new ConnectionViewModel(DiagramViewModel, node2.BottomConnector, node3.BottomConnector, DrawMode.ConnectingLineStraight, RouterMode.RouterOrthogonal);
DiagramViewModel.DirectAddItemCommand.Execute(connector2); DiagramViewModel.DirectAddItemCommand.Execute(connector2);
DiagramViewModel.ClearSelectedItemsCommand.Execute(null); DiagramViewModel.ClearSelectedItemsCommand.Execute(null);

View File

@@ -12,22 +12,22 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels
Title = "Performance"; Title = "Performance";
Info = "This diagram contains 100 nodes and 50 links"; Info = "This diagram contains 100 nodes and 50 links";
_service.ColorViewModel.FillColor.Color = System.Windows.Media.Colors.Orange;
DiagramViewModel = new DiagramViewModel(); DiagramViewModel = new DiagramViewModel();
DiagramViewModel.PageSizeType = PageSizeType.Custom; DiagramViewModel.PageSizeType = PageSizeType.Custom;
DiagramViewModel.PageSize = new Size(1000, 1000); DiagramViewModel.PageSize = new Size(1000, 1000);
DiagramViewModel.ColorViewModel = new ColorViewModel();
DiagramViewModel.ColorViewModel.FillColor.Color = System.Windows.Media.Colors.Orange;
for (int r = 0; r < 10; r++) for (int r = 0; r < 10; r++)
{ {
for (int c = 0; c < 10; c += 2) for (int c = 0; c < 10; c += 2)
{ {
var node1 = new DefaultDesignerItemViewModel() { Left = 10 + c * 10 + c * 120, Top = 10 + r * 100, Text = $"{r * 10 + c}" }; var node1 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 10 + c * 10 + c * 120, Top = 10 + r * 100, Text = $"{r * 10 + c}" };
var node2 = new DefaultDesignerItemViewModel { Left = 10 + (c + 1) * 130, Top = 10 + r * 100, Text = $"{r * 10 + c + 1}" }; var node2 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 10 + (c + 1) * 130, Top = 10 + r * 100, Text = $"{r * 10 + c + 1}" };
DiagramViewModel.DirectAddItemCommand.Execute(new List<SelectableDesignerItemViewModelBase> { node1, node2 }); DiagramViewModel.DirectAddItemCommand.Execute(new List<SelectableDesignerItemViewModelBase> { node1, node2 });
ConnectionViewModel connector1 = new ConnectionViewModel(node1.RightConnector, node2.LeftConnector); ConnectionViewModel connector1 = new ConnectionViewModel(DiagramViewModel, node1.RightConnector, node2.LeftConnector);
DiagramViewModel.DirectAddItemCommand.Execute(connector1); DiagramViewModel.DirectAddItemCommand.Execute(connector1);
} }
} }

View File

@@ -12,25 +12,25 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels
Title = "Simple"; Title = "Simple";
Info = "A simple example of AIStudio.Wpf.DiagramDesigner."; Info = "A simple example of AIStudio.Wpf.DiagramDesigner.";
_service.ColorViewModel.FillColor.Color = System.Windows.Media.Colors.Orange;
DiagramViewModel = new DiagramViewModel(); DiagramViewModel = new DiagramViewModel();
DiagramViewModel.PageSizeType = PageSizeType.Custom; DiagramViewModel.PageSizeType = PageSizeType.Custom;
DiagramViewModel.PageSize = new Size(double.NaN, double.NaN); DiagramViewModel.PageSize = new Size(double.NaN, double.NaN);
DiagramViewModel.ColorViewModel = new ColorViewModel();
DiagramViewModel.ColorViewModel.FillColor.Color = System.Windows.Media.Colors.Orange;
DefaultDesignerItemViewModel node1 = new DefaultDesignerItemViewModel() { Left = 50, Top = 50, Text = "1" }; DefaultDesignerItemViewModel node1 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 50, Top = 50, Text = "1" };
DiagramViewModel.DirectAddItemCommand.Execute(node1); DiagramViewModel.DirectAddItemCommand.Execute(node1);
DefaultDesignerItemViewModel node2 = new DefaultDesignerItemViewModel() { Left = 300, Top = 300, Text = "2" }; DefaultDesignerItemViewModel node2 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 300, Top = 300, Text = "2" };
DiagramViewModel.DirectAddItemCommand.Execute(node2); DiagramViewModel.DirectAddItemCommand.Execute(node2);
DefaultDesignerItemViewModel node3 = new DefaultDesignerItemViewModel() { Left = 300, Top = 50, Text = "3" }; DefaultDesignerItemViewModel node3 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 300, Top = 50, Text = "3" };
DiagramViewModel.DirectAddItemCommand.Execute(node3); DiagramViewModel.DirectAddItemCommand.Execute(node3);
ConnectionViewModel connector1 = new ConnectionViewModel(node1.RightConnector, node2.LeftConnector, DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal); ConnectionViewModel connector1 = new ConnectionViewModel(DiagramViewModel, node1.RightConnector, node2.LeftConnector, DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal);
DiagramViewModel.DirectAddItemCommand.Execute(connector1); DiagramViewModel.DirectAddItemCommand.Execute(connector1);
ConnectionViewModel connector2 = new ConnectionViewModel(node2.RightConnector, node3.RightConnector, DrawMode.ConnectingLineStraight, RouterMode.RouterOrthogonal); ConnectionViewModel connector2 = new ConnectionViewModel(DiagramViewModel, node2.RightConnector, node3.RightConnector, DrawMode.ConnectingLineStraight, RouterMode.RouterOrthogonal);
DiagramViewModel.DirectAddItemCommand.Execute(connector2); DiagramViewModel.DirectAddItemCommand.Execute(connector2);
DiagramViewModel.ClearSelectedItemsCommand.Execute(null); DiagramViewModel.ClearSelectedItemsCommand.Execute(null);

View File

@@ -12,27 +12,27 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels
Title = "Snap to Grid"; Title = "Snap to Grid";
Info = "This diagram has a grid size of 100, moving nodes will make them automatically snap."; Info = "This diagram has a grid size of 100, moving nodes will make them automatically snap.";
_service.ColorViewModel.FillColor.Color = System.Windows.Media.Colors.Orange;
DiagramViewModel = new DiagramViewModel(); DiagramViewModel = new DiagramViewModel();
DiagramViewModel.CellHorizontalAlignment = CellHorizontalAlignment.Center; DiagramViewModel.CellHorizontalAlignment = CellHorizontalAlignment.Center;
DiagramViewModel.CellVerticalAlignment = CellVerticalAlignment.Center; DiagramViewModel.CellVerticalAlignment = CellVerticalAlignment.Center;
DiagramViewModel.PageSizeType = PageSizeType.Custom; DiagramViewModel.PageSizeType = PageSizeType.Custom;
DiagramViewModel.PageSize = new Size(double.NaN, double.NaN); DiagramViewModel.PageSize = new Size(double.NaN, double.NaN);
DiagramViewModel.ColorViewModel = new ColorViewModel();
DiagramViewModel.ColorViewModel.FillColor.Color = System.Windows.Media.Colors.Orange;
DefaultDesignerItemViewModel node1 = new DefaultDesignerItemViewModel() { Left = 50, Top = 50, Text = "1" }; DefaultDesignerItemViewModel node1 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 50, Top = 50, Text = "1" };
DiagramViewModel.DirectAddItemCommand.Execute(node1); DiagramViewModel.DirectAddItemCommand.Execute(node1);
DefaultDesignerItemViewModel node2 = new DefaultDesignerItemViewModel() { Left = 300, Top = 300, Text = "2" }; DefaultDesignerItemViewModel node2 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 300, Top = 300, Text = "2" };
DiagramViewModel.DirectAddItemCommand.Execute(node2); DiagramViewModel.DirectAddItemCommand.Execute(node2);
DefaultDesignerItemViewModel node3 = new DefaultDesignerItemViewModel() { Left = 300, Top = 50, Text = "3" }; DefaultDesignerItemViewModel node3 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 300, Top = 50, Text = "3" };
DiagramViewModel.DirectAddItemCommand.Execute(node3); DiagramViewModel.DirectAddItemCommand.Execute(node3);
ConnectionViewModel connector1 = new ConnectionViewModel(node1.RightConnector, node2.LeftConnector, DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal); ConnectionViewModel connector1 = new ConnectionViewModel(DiagramViewModel, node1.RightConnector, node2.LeftConnector, DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal);
DiagramViewModel.DirectAddItemCommand.Execute(connector1); DiagramViewModel.DirectAddItemCommand.Execute(connector1);
ConnectionViewModel connector2 = new ConnectionViewModel(node2.RightConnector, node3.RightConnector, DrawMode.ConnectingLineStraight, RouterMode.RouterOrthogonal); ConnectionViewModel connector2 = new ConnectionViewModel(DiagramViewModel, node2.RightConnector, node3.RightConnector, DrawMode.ConnectingLineStraight, RouterMode.RouterOrthogonal);
DiagramViewModel.DirectAddItemCommand.Execute(connector2); DiagramViewModel.DirectAddItemCommand.Execute(connector2);
DiagramViewModel.ClearSelectedItemsCommand.Execute(null); DiagramViewModel.ClearSelectedItemsCommand.Execute(null);

View File

@@ -12,25 +12,25 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels
Title = "Zoom"; Title = "Zoom";
Info = "Drag the upper-right scroll bar to make the canvas larger and smaller."; Info = "Drag the upper-right scroll bar to make the canvas larger and smaller.";
_service.ColorViewModel.FillColor.Color = System.Windows.Media.Colors.Orange;
DiagramViewModel = new DiagramViewModel(); DiagramViewModel = new DiagramViewModel();
DiagramViewModel.PageSizeType = PageSizeType.Custom; DiagramViewModel.PageSizeType = PageSizeType.Custom;
DiagramViewModel.PageSize = new Size(double.NaN, double.NaN); DiagramViewModel.PageSize = new Size(double.NaN, double.NaN);
DiagramViewModel.ColorViewModel = new ColorViewModel();
DiagramViewModel.ColorViewModel.FillColor.Color = System.Windows.Media.Colors.Orange;
DefaultDesignerItemViewModel node1 = new DefaultDesignerItemViewModel() { Left = 50, Top = 50, Text = "1" }; DefaultDesignerItemViewModel node1 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 50, Top = 50, Text = "1" };
DiagramViewModel.DirectAddItemCommand.Execute(node1); DiagramViewModel.DirectAddItemCommand.Execute(node1);
DefaultDesignerItemViewModel node2 = new DefaultDesignerItemViewModel() { Left = 300, Top = 300, Text = "2" }; DefaultDesignerItemViewModel node2 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 300, Top = 300, Text = "2" };
DiagramViewModel.DirectAddItemCommand.Execute(node2); DiagramViewModel.DirectAddItemCommand.Execute(node2);
DefaultDesignerItemViewModel node3 = new DefaultDesignerItemViewModel() { Left = 300, Top = 50, Text = "3" }; DefaultDesignerItemViewModel node3 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 300, Top = 50, Text = "3" };
DiagramViewModel.DirectAddItemCommand.Execute(node3); DiagramViewModel.DirectAddItemCommand.Execute(node3);
ConnectionViewModel connector1 = new ConnectionViewModel(node1.RightConnector, node2.LeftConnector, DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal); ConnectionViewModel connector1 = new ConnectionViewModel(DiagramViewModel, node1.RightConnector, node2.LeftConnector, DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal);
DiagramViewModel.DirectAddItemCommand.Execute(connector1); DiagramViewModel.DirectAddItemCommand.Execute(connector1);
ConnectionViewModel connector2 = new ConnectionViewModel(node2.RightConnector, node3.RightConnector, DrawMode.ConnectingLineStraight, RouterMode.RouterOrthogonal); ConnectionViewModel connector2 = new ConnectionViewModel(DiagramViewModel, node2.RightConnector, node3.RightConnector, DrawMode.ConnectingLineStraight, RouterMode.RouterOrthogonal);
DiagramViewModel.DirectAddItemCommand.Execute(connector2); DiagramViewModel.DirectAddItemCommand.Execute(connector2);
DiagramViewModel.ClearSelectedItemsCommand.Execute(null); DiagramViewModel.ClearSelectedItemsCommand.Execute(null);

View File

@@ -0,0 +1,16 @@
<UserControl x:Class="AIStudio.Wpf.DiagramDesigner.Demo.Views.LineAnimationView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:dd="https://gitee.com/akwkevin/aistudio.-wpf.-diagram"
xmlns:controls="clr-namespace:AIStudio.Wpf.DiagramDesigner.Demo.Controls"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<Grid>
<!-- Diagram Control -->
<dd:DiagramControl x:Name="diagram" DataContext="{Binding DiagramViewModel}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
<controls:TitleControl/>
</Grid>
</UserControl>

View File

@@ -0,0 +1,26 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace AIStudio.Wpf.DiagramDesigner.Demo.Views
{
/// <summary>
/// LineAnimationView.xaml 的交互逻辑
/// </summary>
public partial class LineAnimationView : UserControl
{
public LineAnimationView()
{
InitializeComponent();
}
}
}

View File

@@ -0,0 +1,16 @@
<UserControl x:Class="AIStudio.Wpf.DiagramDesigner.Demo.Views.PathAnimationView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:dd="https://gitee.com/akwkevin/aistudio.-wpf.-diagram"
xmlns:controls="clr-namespace:AIStudio.Wpf.DiagramDesigner.Demo.Controls"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<Grid>
<!-- Diagram Control -->
<dd:DiagramControl x:Name="diagram" DataContext="{Binding DiagramViewModel}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
<controls:TitleControl/>
</Grid>
</UserControl>

View File

@@ -0,0 +1,26 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace AIStudio.Wpf.DiagramDesigner.Demo.Views
{
/// <summary>
/// PathAnimationView.xaml 的交互逻辑
/// </summary>
public partial class PathAnimationView : UserControl
{
public PathAnimationView()
{
InitializeComponent();
}
}
}

View File

@@ -0,0 +1,12 @@
<UserControl x:Class="AIStudio.Wpf.DiagramDesigner.Demo.Views.CustomGroupView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:AIStudio.Wpf.DiagramDesigner.Demo.Views"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<Grid>
</Grid>
</UserControl>

View File

@@ -0,0 +1,26 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace AIStudio.Wpf.DiagramDesigner.Demo.Views
{
/// <summary>
/// CustomGroupView.xaml 的交互逻辑
/// </summary>
public partial class CustomGroupView : UserControl
{
public CustomGroupView()
{
InitializeComponent();
}
}
}

View File

@@ -1,4 +1,4 @@
<UserControl x:Class="AIStudio.Wpf.DiagramDesigner.Demo.Views.ThickLinkView" <UserControl x:Class="AIStudio.Wpf.DiagramDesigner.Demo.Views.CustomLinkView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

View File

@@ -16,9 +16,9 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo.Views
/// <summary> /// <summary>
/// ThickLinkView.xaml 的交互逻辑 /// ThickLinkView.xaml 的交互逻辑
/// </summary> /// </summary>
public partial class ThickLinkView : UserControl public partial class CustomLinkView : UserControl
{ {
public ThickLinkView() public CustomLinkView()
{ {
InitializeComponent(); InitializeComponent();
} }

View File

@@ -464,7 +464,7 @@ namespace AIStudio.Wpf.DiagramDesigner
} }
else if (partialConnection.IsFullConnection) else if (partialConnection.IsFullConnection)
{ {
partialConnection.RaiseFullConnection();
} }
else if (_service.DrawModeViewModel.GetDrawMode() == DrawMode.DirectLine && connectorsHit.Count() == 1) else if (_service.DrawModeViewModel.GetDrawMode() == DrawMode.DirectLine && connectorsHit.Count() == 1)
{ {

View File

@@ -162,6 +162,12 @@ namespace AIStudio.Wpf.DiagramDesigner
get; set; get; set;
} }
[XmlAttribute]
public LineAnimation LineAnimation
{
get; set;
}
public event PropertyChangedEventHandler PropertyChanged; public event PropertyChangedEventHandler PropertyChanged;
} }

View File

@@ -50,6 +50,7 @@
HorizontalAlignment="Left" HorizontalAlignment="Left"
VerticalAlignment="Top" VerticalAlignment="Top"
RenderTransformOrigin="0.5,0.5" RenderTransformOrigin="0.5,0.5"
Visibility="{Binding Path=IsFullConnection, Converter={x:Static s:BoolToVisibilityConverter.Instance}}"
Style="{StaticResource ArrowStyle}"> Style="{StaticResource ArrowStyle}">
<Path.RenderTransform> <Path.RenderTransform>
<TransformGroup> <TransformGroup>
@@ -68,6 +69,7 @@
HorizontalAlignment="Left" HorizontalAlignment="Left"
VerticalAlignment="Top" VerticalAlignment="Top"
RenderTransformOrigin="0.5,0.5" RenderTransformOrigin="0.5,0.5"
Visibility="{Binding Path=IsFullConnection, Converter={x:Static s:BoolToVisibilityConverter.Instance}}"
Style="{StaticResource ArrowStyle}"> Style="{StaticResource ArrowStyle}">
<Path.RenderTransform> <Path.RenderTransform>
<TransformGroup> <TransformGroup>

View File

@@ -52,7 +52,6 @@ namespace AIStudio.Wpf.DiagramDesigner
{ {
switch (e.PropertyName) switch (e.PropertyName)
{ {
case nameof(ConnectionViewModel.LineAnimation):
case nameof(ConnectionViewModel.PathGeneratorResult): case nameof(ConnectionViewModel.PathGeneratorResult):
await DoAnimation(); await DoAnimation();
break; break;
@@ -65,7 +64,7 @@ namespace AIStudio.Wpf.DiagramDesigner
if (this.DataContext is ConnectionViewModel connector && connector.IsFullConnection) if (this.DataContext is ConnectionViewModel connector && connector.IsFullConnection)
{ {
await System.Threading.Tasks.Task.Delay(100); await System.Threading.Tasks.Task.Delay(100);
switch (connector.LineAnimation) switch (connector.ColorViewModel.LineAnimation)
{ {
case LineAnimation.None: case LineAnimation.None:
_story?.Stop(); _story?.Stop();

View File

@@ -137,6 +137,19 @@ namespace AIStudio.Wpf.DiagramDesigner
} }
} }
} }
private LineAnimation _lineAnimation = LineAnimation.None;
public LineAnimation LineAnimation
{
get
{
return _lineAnimation;
}
set
{
SetProperty(ref _lineAnimation, value);
}
}
} }

View File

@@ -29,6 +29,10 @@ namespace AIStudio.Wpf.DiagramDesigner
{ {
get; set; get; set;
} }
LineAnimation LineAnimation
{
get; set;
}
event PropertyChangedEventHandler PropertyChanged; event PropertyChangedEventHandler PropertyChanged;
} }
} }

View File

@@ -15,24 +15,22 @@ namespace AIStudio.Wpf.DiagramDesigner
{ {
public class ConnectionViewModel : SelectableDesignerItemViewModelBase public class ConnectionViewModel : SelectableDesignerItemViewModelBase
{ {
public ConnectionViewModel(IDiagramViewModel root, FullyCreatedConnectorInfo sourceConnectorInfo, ConnectorInfoBase sinkConnectorInfo, DrawMode drawMode, RouterMode routerMode)
{
Root = root;
PathMode = drawMode.ToString();
RouterMode = routerMode.ToString();
Init(sourceConnectorInfo, sinkConnectorInfo);
}
public ConnectionViewModel(FullyCreatedConnectorInfo sourceConnectorInfo, ConnectorInfoBase sinkConnectorInfo, DrawMode drawMode = DrawMode.ConnectingLineSmooth, RouterMode routerMode = AIStudio.Wpf.DiagramDesigner.RouterMode.RouterNormal) : this(null, sourceConnectorInfo, sinkConnectorInfo, drawMode, routerMode) public ConnectionViewModel(FullyCreatedConnectorInfo sourceConnectorInfo, ConnectorInfoBase sinkConnectorInfo, DrawMode drawMode = DrawMode.ConnectingLineSmooth, RouterMode routerMode = AIStudio.Wpf.DiagramDesigner.RouterMode.RouterNormal) : this(null, sourceConnectorInfo, sinkConnectorInfo, drawMode, routerMode)
{ {
} }
public ConnectionViewModel(IDiagramViewModel root, FullyCreatedConnectorInfo sourceConnectorInfo, ConnectorInfoBase sinkConnectorInfo, DrawMode drawMode = DrawMode.ConnectingLineSmooth, RouterMode routerMode = AIStudio.Wpf.DiagramDesigner.RouterMode.RouterNormal) : base(root)
{
PathMode = drawMode.ToString();
RouterMode = routerMode.ToString();
Init(sourceConnectorInfo, sinkConnectorInfo);
}
public ConnectionViewModel(IDiagramViewModel root, FullyCreatedConnectorInfo sourceConnectorInfo, FullyCreatedConnectorInfo sinkConnectorInfo, ConnectionItem designer) : base(root, designer) public ConnectionViewModel(IDiagramViewModel root, FullyCreatedConnectorInfo sourceConnectorInfo, FullyCreatedConnectorInfo sinkConnectorInfo, ConnectionItem designer) : base(root, designer)
{ {
PathMode = designer.PathMode; PathMode = designer.PathMode;
RouterMode = designer.RouterMode; RouterMode = designer.RouterMode;
Init(sourceConnectorInfo, sinkConnectorInfo); Init(sourceConnectorInfo, sinkConnectorInfo);
} }
@@ -76,9 +74,9 @@ namespace AIStudio.Wpf.DiagramDesigner
AddLabelCommand = new SimpleCommand(Command_Enable, para => AddLabel()); AddLabelCommand = new SimpleCommand(Command_Enable, para => AddLabel());
} }
protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase) protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
{ {
base.LoadDesignerItemViewModel(root, designerbase); base.LoadDesignerItemViewModel(designerbase);
if (designerbase is ConnectionItem designer) if (designerbase is ConnectionItem designer)
{ {
@@ -297,23 +295,6 @@ namespace AIStudio.Wpf.DiagramDesigner
} }
} }
private LineAnimation _lineAnimation = LineAnimation.None;
[Browsable(true)]
[CanDo]
[StyleName("LineAnimationStyle")]
public LineAnimation LineAnimation
{
get
{
return _lineAnimation;
}
set
{
SetProperty(ref _lineAnimation, value);
}
}
public virtual Dictionary<string, string> PropertiesSetting public virtual Dictionary<string, string> PropertiesSetting
{ {
get get
@@ -384,6 +365,11 @@ namespace AIStudio.Wpf.DiagramDesigner
} }
} }
public void RaiseFullConnection()
{
RaisePropertyChanged(nameof(IsFullConnection));
}
public bool IsPortless => SourceConnectorInfo?.DataItem?.Connectors?.Count() == 0; public bool IsPortless => SourceConnectorInfo?.DataItem?.Connectors?.Count() == 0;
#endregion #endregion
@@ -506,6 +492,15 @@ namespace AIStudio.Wpf.DiagramDesigner
} }
} }
} }
else if (sender is ColorViewModel)
{
switch (e.PropertyName)
{
case nameof(ColorViewModel.LineAnimation):
RaisePropertyChanged(nameof(PathGeneratorResult));
break;
}
}
} }
private void UpdateArea() private void UpdateArea()

View File

@@ -11,7 +11,12 @@ namespace AIStudio.Wpf.DiagramDesigner
{ {
public abstract class ConnectorInfoBase : SelectableViewModelBase public abstract class ConnectorInfoBase : SelectableViewModelBase
{ {
public ConnectorInfoBase(ConnectorOrientation orientation) public ConnectorInfoBase(ConnectorOrientation orientation) : this(null, orientation)
{
}
public ConnectorInfoBase(IDiagramViewModel root, ConnectorOrientation orientation) : base(root)
{ {
this.Orientation = orientation; this.Orientation = orientation;
} }
@@ -31,9 +36,9 @@ namespace AIStudio.Wpf.DiagramDesigner
return new ConnectorInfoItemBase(this); return new ConnectorInfoItemBase(this);
} }
protected override void Init() protected override void Init(IDiagramViewModel root)
{ {
base.Init(); base.Init(root);
ColorViewModel = new ColorViewModel() ColorViewModel = new ColorViewModel()
{ {
@@ -42,9 +47,9 @@ namespace AIStudio.Wpf.DiagramDesigner
}; };
} }
protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase) protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
{ {
base.LoadDesignerItemViewModel(root, designerbase); base.LoadDesignerItemViewModel(designerbase);
if (designerbase is ConnectorInfoItemBase designer) if (designerbase is ConnectorInfoItemBase designer)
{ {

View File

@@ -8,12 +8,16 @@ namespace AIStudio.Wpf.DiagramDesigner
{ {
public class ConnectorLabelModel : ConnectorPointModel, ISelectable public class ConnectorLabelModel : ConnectorPointModel, ISelectable
{ {
public ConnectorLabelModel(ConnectionViewModel connector, string content, double? distance = null, PointBase? offset = null) public ConnectorLabelModel(ConnectionViewModel connector, string content, double? distance = null, PointBase? offset = null) : this(null, connector, content, distance, offset)
{
}
public ConnectorLabelModel(IDiagramViewModel root, ConnectionViewModel connector, string content, double? distance = null, PointBase? offset = null) : base(root)
{ {
Parent = connector; Parent = connector;
Text = content; Text = content;
Distance = distance; Distance = distance;
Offset = offset ?? new PointBase(); Offset = offset ?? new PointBase();
} }
public ConnectorLabelModel(IDiagramViewModel root, ConnectionViewModel connector, SelectableItemBase designer) : base(root, designer) public ConnectorLabelModel(IDiagramViewModel root, ConnectionViewModel connector, SelectableItemBase designer) : base(root, designer)
@@ -31,9 +35,9 @@ namespace AIStudio.Wpf.DiagramDesigner
return new ConnectorLabelItem(this); return new ConnectorLabelItem(this);
} }
protected override void Init() protected override void Init(IDiagramViewModel root)
{ {
base.Init(); base.Init(root);
ConnectorWidth = 30; ConnectorWidth = 30;
ConnectorHeight = 30; ConnectorHeight = 30;
@@ -41,9 +45,9 @@ namespace AIStudio.Wpf.DiagramDesigner
DeleteLabelCommand = new SimpleCommand(Command_Enable, DeleteLabel); DeleteLabelCommand = new SimpleCommand(Command_Enable, DeleteLabel);
} }
protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase) protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
{ {
base.LoadDesignerItemViewModel(root, designerbase); base.LoadDesignerItemViewModel(designerbase);
if (designerbase is ConnectorLabelItem designer) if (designerbase is ConnectorLabelItem designer)
{ {

View File

@@ -11,9 +11,24 @@ namespace AIStudio.Wpf.DiagramDesigner
{ {
public class ConnectorPointModel : SelectableViewModelBase public class ConnectorPointModel : SelectableViewModelBase
{ {
public ConnectorPointModel() public ConnectorPointModel() : this(null)
{ {
}
public ConnectorPointModel(IDiagramViewModel root) : base(root)
{
}
public ConnectorPointModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{
}
public ConnectorPointModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
{
} }
public ConnectorPointModel(PointBase point) : this() public ConnectorPointModel(PointBase point) : this()
@@ -28,24 +43,14 @@ namespace AIStudio.Wpf.DiagramDesigner
Y = y; Y = y;
} }
public ConnectorPointModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{
}
public ConnectorPointModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
{
}
public override SelectableItemBase GetSerializableObject() public override SelectableItemBase GetSerializableObject()
{ {
return new ConnectorPointItem(this); return new ConnectorPointItem(this);
} }
protected override void Init() protected override void Init(IDiagramViewModel root)
{ {
base.Init(); base.Init(root);
ColorViewModel = new ColorViewModel() ColorViewModel = new ColorViewModel()
{ {
LineColor = new ColorObject() { Color = Color.FromArgb(0xAA, 0x00, 0x00, 0x80) }, LineColor = new ColorObject() { Color = Color.FromArgb(0xAA, 0x00, 0x00, 0x80) },
@@ -53,9 +58,9 @@ namespace AIStudio.Wpf.DiagramDesigner
}; };
} }
protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase) protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
{ {
base.LoadDesignerItemViewModel(root, designerbase); base.LoadDesignerItemViewModel(designerbase);
if (designerbase is ConnectorPointItem designer) if (designerbase is ConnectorPointItem designer)
{ {
@@ -78,7 +83,7 @@ namespace AIStudio.Wpf.DiagramDesigner
} }
set set
{ {
if(SetProperty(ref _x, value)) if (SetProperty(ref _x, value))
{ {
RaisePropertyChanged(nameof(Left)); RaisePropertyChanged(nameof(Left));
} }
@@ -138,15 +143,27 @@ namespace AIStudio.Wpf.DiagramDesigner
private double connectorWidth = 8; private double connectorWidth = 8;
public double ConnectorWidth public double ConnectorWidth
{ {
get { return connectorWidth; } get
set { connectorWidth = value; } {
return connectorWidth;
}
set
{
connectorWidth = value;
}
} }
private double connectorHeight = 8; private double connectorHeight = 8;
public double ConnectorHeight public double ConnectorHeight
{ {
get { return connectorHeight; } get
set { connectorHeight = value; } {
return connectorHeight;
}
set
{
connectorHeight = value;
}
} }
public static ConnectorPointModel operator -(ConnectorPointModel a, ConnectorPointModel b) public static ConnectorPointModel operator -(ConnectorPointModel a, ConnectorPointModel b)

View File

@@ -6,11 +6,15 @@ namespace AIStudio.Wpf.DiagramDesigner
{ {
public class ConnectorVertexModel : ConnectorPointModel public class ConnectorVertexModel : ConnectorPointModel
{ {
public ConnectorVertexModel(ConnectionViewModel connector, PointBase? position = null) public ConnectorVertexModel(ConnectionViewModel connector, PointBase? position = null) : this(null, connector, position)
{
}
public ConnectorVertexModel(IDiagramViewModel root, ConnectionViewModel connector, PointBase? position = null) : base(root)
{ {
Parent = connector; Parent = connector;
X = position?.X ?? 0; X = position?.X ?? 0;
Y = position?.Y ?? 0; Y = position?.Y ?? 0;
} }
public ConnectorVertexModel(IDiagramViewModel root, ConnectionViewModel connector, SelectableItemBase designer) : base(root, designer) public ConnectorVertexModel(IDiagramViewModel root, ConnectionViewModel connector, SelectableItemBase designer) : base(root, designer)
@@ -28,16 +32,16 @@ namespace AIStudio.Wpf.DiagramDesigner
return new ConnectorVertexItem(this); return new ConnectorVertexItem(this);
} }
protected override void Init() protected override void Init(IDiagramViewModel root)
{ {
base.Init(); base.Init(root);
DeleteVertexCommand = new SimpleCommand(Command_Enable, DeleteVertex); DeleteVertexCommand = new SimpleCommand(Command_Enable, DeleteVertex);
} }
protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase) protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
{ {
base.LoadDesignerItemViewModel(root, designerbase); base.LoadDesignerItemViewModel(designerbase);
if (designerbase is ConnectorVertexItem designer) if (designerbase is ConnectorVertexItem designer)
{ {

View File

@@ -11,7 +11,12 @@ namespace AIStudio.Wpf.DiagramDesigner
public class FullyCreatedConnectorInfo : ConnectorInfoBase public class FullyCreatedConnectorInfo : ConnectorInfoBase
{ {
public FullyCreatedConnectorInfo(DesignerItemViewModelBase dataItem, ConnectorOrientation orientation, bool isInnerPoint = false, ValueTypePoint valueTypePoint = 0) public FullyCreatedConnectorInfo(DesignerItemViewModelBase dataItem, ConnectorOrientation orientation, bool isInnerPoint = false, ValueTypePoint valueTypePoint = 0)
: base(orientation) : this(null, dataItem, orientation, isInnerPoint, valueTypePoint)
{
}
public FullyCreatedConnectorInfo(IDiagramViewModel root, DesignerItemViewModelBase dataItem, ConnectorOrientation orientation, bool isInnerPoint = false, ValueTypePoint valueTypePoint = 0)
: base(root, orientation)
{ {
this.Parent = dataItem; this.Parent = dataItem;
this.IsInnerPoint = isInnerPoint; this.IsInnerPoint = isInnerPoint;
@@ -45,9 +50,9 @@ namespace AIStudio.Wpf.DiagramDesigner
return new FullyCreatedConnectorInfoItem(this); return new FullyCreatedConnectorInfoItem(this);
} }
protected override void Init() protected override void Init(IDiagramViewModel root)
{ {
base.Init(); base.Init(root);
menuOptions = new List<CinchMenuItem>(); menuOptions = new List<CinchMenuItem>();
MenuItemCommand = new SimpleCommand(Command_Enable, ExecuteMenuItemCommand); MenuItemCommand = new SimpleCommand(Command_Enable, ExecuteMenuItemCommand);
@@ -55,9 +60,9 @@ namespace AIStudio.Wpf.DiagramDesigner
} }
protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase) protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
{ {
base.LoadDesignerItemViewModel(root, designerbase); base.LoadDesignerItemViewModel(designerbase);
if (designerbase is FullyCreatedConnectorInfoItem designer) if (designerbase is FullyCreatedConnectorInfoItem designer)
{ {

View File

@@ -9,6 +9,18 @@ namespace AIStudio.Wpf.DiagramDesigner
{ {
public class PartCreatedConnectorInfo : ConnectorInfoBase public class PartCreatedConnectorInfo : ConnectorInfoBase
{ {
public PartCreatedConnectorInfo(double X, double Y) : this(null, X, Y)
{
}
public PartCreatedConnectorInfo(IDiagramViewModel root, double X, double Y) : base(root, ConnectorOrientation.None)
{
this.position = new PointBase(X, Y);
}
private PointBase position; private PointBase position;
public override PointBase Position public override PointBase Position
{ {
@@ -18,9 +30,6 @@ namespace AIStudio.Wpf.DiagramDesigner
} }
} }
public PartCreatedConnectorInfo(double X, double Y) : base(ConnectorOrientation.None)
{
this.position = new PointBase(X, Y);
}
} }
} }

View File

@@ -13,7 +13,12 @@ namespace AIStudio.Wpf.DiagramDesigner
{ {
public abstract class DesignerItemViewModelBase : SelectableDesignerItemViewModelBase public abstract class DesignerItemViewModelBase : SelectableDesignerItemViewModelBase
{ {
public DesignerItemViewModelBase() : base() public DesignerItemViewModelBase() : this(null)
{
}
public DesignerItemViewModelBase(IDiagramViewModel root) : base(root)
{ {
ShapeDefiner = Shapes.Rectangle; ShapeDefiner = Shapes.Rectangle;
} }
@@ -33,16 +38,16 @@ namespace AIStudio.Wpf.DiagramDesigner
return new DesignerItemBase(this); return new DesignerItemBase(this);
} }
protected override void Init() protected override void Init(IDiagramViewModel root)
{ {
base.Init(); base.Init(root);
InitConnector(); InitConnector();
} }
protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase) protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
{ {
base.LoadDesignerItemViewModel(root, designerbase); base.LoadDesignerItemViewModel(designerbase);
if (designerbase is DesignerItemBase designer) if (designerbase is DesignerItemBase designer)
{ {

View File

@@ -9,14 +9,19 @@ namespace AIStudio.Wpf.DiagramDesigner
{ {
public class GroupDesignerItemViewModel : DesignerItemViewModelBase public class GroupDesignerItemViewModel : DesignerItemViewModelBase
{ {
public GroupDesignerItemViewModel() : base() public GroupDesignerItemViewModel() : this(null)
{
}
public GroupDesignerItemViewModel(IDiagramViewModel root) : base(root)
{ {
} }
protected override void Init() protected override void Init(IDiagramViewModel root)
{ {
base.Init(); base.Init(root);
this.IsHitTestVisible = false; this.IsHitTestVisible = false;
} }

View File

@@ -22,8 +22,12 @@ namespace AIStudio.Wpf.DiagramDesigner
public abstract class SelectableDesignerItemViewModelBase : SelectableViewModelBase, ISelectItems, ISelectable, IGroupable public abstract class SelectableDesignerItemViewModelBase : SelectableViewModelBase, ISelectItems, ISelectable, IGroupable
{ {
public SelectableDesignerItemViewModelBase() : this(null)
{
public SelectableDesignerItemViewModelBase():base() }
public SelectableDesignerItemViewModelBase(IDiagramViewModel root) :base(root)
{ {
} }
@@ -38,17 +42,17 @@ namespace AIStudio.Wpf.DiagramDesigner
} }
protected override void Init() protected override void Init(IDiagramViewModel root)
{ {
base.Init(); base.Init(root);
SelectItemCommand = new SimpleCommand(Command_Enable, ExecuteSelectItemCommand); SelectItemCommand = new SimpleCommand(Command_Enable, ExecuteSelectItemCommand);
EditCommand = new SimpleCommand(Command_Enable, ExecuteEditCommand); EditCommand = new SimpleCommand(Command_Enable, ExecuteEditCommand);
} }
protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase) protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
{ {
base.LoadDesignerItemViewModel(root, designerbase); base.LoadDesignerItemViewModel(designerbase);
} }
public virtual bool InitData() public virtual bool InitData()

View File

@@ -20,34 +20,38 @@ namespace AIStudio.Wpf.DiagramDesigner
} }
} }
public SelectableViewModelBase() public SelectableViewModelBase() : this(null)
{ {
Init();
}
public SelectableViewModelBase(IDiagramViewModel root)
{
Init(root);
(FontViewModel as FontViewModel).PropertyChanged += FontViewModel_PropertyChanged; (FontViewModel as FontViewModel).PropertyChanged += FontViewModel_PropertyChanged;
} }
public SelectableViewModelBase(IDiagramViewModel root, SelectableItemBase designer) public SelectableViewModelBase(IDiagramViewModel root, SelectableItemBase designer)
{ {
Init(); Init(root);
LoadDesignerItemViewModel(root, designer); LoadDesignerItemViewModel(designer);
(FontViewModel as FontViewModel).PropertyChanged += FontViewModel_PropertyChanged; (FontViewModel as FontViewModel).PropertyChanged += FontViewModel_PropertyChanged;
} }
public SelectableViewModelBase(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) public SelectableViewModelBase(IDiagramViewModel root, SerializableItem serializableItem, string serializableType)
{ {
Init(); Init(root);
SelectableItemBase obj = SerializeHelper.DeserializeObject(serializableItem.SerializableTypeName, serializableItem.SerializableString, serializableType); SelectableItemBase obj = SerializeHelper.DeserializeObject(serializableItem.SerializableTypeName, serializableItem.SerializableString, serializableType);
LoadDesignerItemViewModel(root, obj); LoadDesignerItemViewModel(obj);
(FontViewModel as FontViewModel).PropertyChanged += FontViewModel_PropertyChanged; (FontViewModel as FontViewModel).PropertyChanged += FontViewModel_PropertyChanged;
} }
public virtual SerializableItem ToSerializableItem(string serializableType) public virtual SerializableItem ToSerializableItem(string serializableType)
{ {
var obj = GetSerializableObject(); var obj = GetSerializableObject();
if (obj != null) if (obj != null)
{ {
return new SerializableItem() { ModelTypeName = this.GetType().FullName, SerializableTypeName = obj.GetType().FullName, SerializableString = SerializeHelper.SerializeObject(obj, serializableType) }; return new SerializableItem() { ModelTypeName = this.GetType().FullName, SerializableTypeName = obj.GetType().FullName, SerializableString = SerializeHelper.SerializeObject(obj, serializableType) };
} }
else else
{ {
@@ -60,8 +64,10 @@ namespace AIStudio.Wpf.DiagramDesigner
return null; return null;
} }
protected virtual void Init() protected virtual void Init(IDiagramViewModel root)
{ {
Root = root;
if (Root?.ColorViewModel != null) if (Root?.ColorViewModel != null)
{ {
this.ColorViewModel = CopyHelper.Mapper(Root.ColorViewModel); this.ColorViewModel = CopyHelper.Mapper(Root.ColorViewModel);
@@ -92,10 +98,8 @@ namespace AIStudio.Wpf.DiagramDesigner
LockObjectViewModel = new LockObjectViewModel(); LockObjectViewModel = new LockObjectViewModel();
} }
protected virtual void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase) protected virtual void LoadDesignerItemViewModel(SelectableItemBase designerbase)
{ {
this.Root = root;
this.Id = designerbase.Id; this.Id = designerbase.Id;
this.ParentId = designerbase.ParentId; this.ParentId = designerbase.ParentId;
this.IsGroup = designerbase.IsGroup; this.IsGroup = designerbase.IsGroup;
@@ -211,7 +215,7 @@ namespace AIStudio.Wpf.DiagramDesigner
return _isHitTestVisible; return _isHitTestVisible;
} }
set set
{ {
if (SetProperty(ref _isHitTestVisible, value)) if (SetProperty(ref _isHitTestVisible, value))
{ {
RaisePropertyChanged("IsReadOnly"); RaisePropertyChanged("IsReadOnly");

View File

@@ -7,7 +7,12 @@ namespace AIStudio.Wpf.DiagramDesigner
{ {
public class DefaultDesignerItemViewModel : DesignerItemViewModelBase public class DefaultDesignerItemViewModel : DesignerItemViewModelBase
{ {
public DefaultDesignerItemViewModel() : base() public DefaultDesignerItemViewModel() : this(null)
{
}
public DefaultDesignerItemViewModel(IDiagramViewModel root) : base(root)
{ {
} }

View File

@@ -17,23 +17,24 @@ namespace AIStudio.Wpf.DiagramDesigner
{ {
//private IDisposable propertyChangedSubscription; //private IDisposable propertyChangedSubscription;
//private IDisposable connectorsChangedSubscription; //private IDisposable connectorsChangedSubscription;
public SimpleCommand AddItemCommand { get; private set; } public GifImageItemViewModel() : this(null)
public SimpleCommand ImageSwitchCommand { get; private set; }
public GifImageItemViewModel() : base()
{ {
}
public GifImageItemViewModel(IDiagramViewModel root) : base(root)
{
} }
public GifImageItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer) public GifImageItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{ {
} }
public GifImageItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) public GifImageItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
{ {
} }
public override SelectableItemBase GetSerializableObject() public override SelectableItemBase GetSerializableObject()
@@ -41,26 +42,26 @@ namespace AIStudio.Wpf.DiagramDesigner
return new MediaDesignerItem(this); return new MediaDesignerItem(this);
} }
protected override void Init() protected override void Init(IDiagramViewModel root)
{ {
AddItemCommand = new SimpleCommand(Command_Enable, ExecuteAddItemCommand); base.Init(root);
ImageSwitchCommand = new SimpleCommand(Command_Enable, ExecuteImageSwitchCommand);
base.Init();
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();
AddItemCommand = new SimpleCommand(Command_Enable, ExecuteAddItemCommand);
ImageSwitchCommand = new SimpleCommand(Command_Enable, ExecuteImageSwitchCommand);
} }
protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase) protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
{ {
base.LoadDesignerItemViewModel(root, designerbase); base.LoadDesignerItemViewModel(designerbase);
if (designerbase is MediaDesignerItem designer) if (designerbase is MediaDesignerItem designer)
{ {
this.Icon = designer.Icon; this.Icon = designer.Icon;
foreach (var connector in designer.Connectors) foreach (var connector in designer.Connectors)
@@ -74,12 +75,25 @@ namespace AIStudio.Wpf.DiagramDesigner
private bool _shouldInsertAnchor; private bool _shouldInsertAnchor;
public bool ShouldInsertAnchor public bool ShouldInsertAnchor
{ {
get { return _shouldInsertAnchor; } get
{
return _shouldInsertAnchor;
}
set set
{ {
SetProperty(ref _shouldInsertAnchor, value); SetProperty(ref _shouldInsertAnchor, value);
} }
} }
public SimpleCommand AddItemCommand
{
get; private set;
}
public SimpleCommand ImageSwitchCommand
{
get; private set;
}
private string dir = System.AppDomain.CurrentDomain.BaseDirectory + "Images\\Gifs"; private string dir = System.AppDomain.CurrentDomain.BaseDirectory + "Images\\Gifs";
private void BuildMenuOptions() private void BuildMenuOptions()

View File

@@ -15,12 +15,17 @@ namespace AIStudio.Wpf.DiagramDesigner
{ {
public class ImageItemViewModel : DesignerItemViewModelBase public class ImageItemViewModel : DesignerItemViewModelBase
{ {
private static readonly string filter = "图片|*.bmp;*.jpg;*.jpeg;*.gif;*.png"; private static readonly string filter = "图片|*.bmp;*.jpg;*.jpeg;*.gif;*.png";
public ImageItemViewModel() : base()
public ImageItemViewModel() : this(null)
{ {
} }
public ImageItemViewModel(IDiagramViewModel root) : base(root)
{
}
public ImageItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer) public ImageItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{ {
@@ -36,9 +41,9 @@ namespace AIStudio.Wpf.DiagramDesigner
return new ImageDesignerItem(this); return new ImageDesignerItem(this);
} }
protected override void Init() protected override void Init(IDiagramViewModel root)
{ {
base.Init(); base.Init(root);
this.PropertyChanged += ImageItemViewModel_PropertyChanged; this.PropertyChanged += ImageItemViewModel_PropertyChanged;
@@ -110,9 +115,9 @@ namespace AIStudio.Wpf.DiagramDesigner
} }
protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase) protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
{ {
base.LoadDesignerItemViewModel(root, designerbase); base.LoadDesignerItemViewModel(designerbase);
if (designerbase is ImageDesignerItem designer) if (designerbase is ImageDesignerItem designer)
{ {

View File

@@ -5,23 +5,20 @@ namespace AIStudio.Wpf.DiagramDesigner
{ {
public class LinkPointDesignerItemViewModel : DesignerItemViewModelBase public class LinkPointDesignerItemViewModel : DesignerItemViewModelBase
{ {
public Point CurrentLocation public LinkPointDesignerItemViewModel(Point location) : this(null, location)
{ {
get
{
return new Point() { X = Left + ItemWidth / 2, Y = Top + ItemHeight / 2 };
}
} }
public LinkPointDesignerItemViewModel(Point location) : base() public LinkPointDesignerItemViewModel(IDiagramViewModel root, Point location) : base(root)
{ {
Left = Math.Max(0, location.X - ItemWidth / 2); Left = Math.Max(0, location.X - ItemWidth / 2);
Top = Math.Max(0, location.Y - ItemHeight / 2); Top = Math.Max(0, location.Y - ItemHeight / 2);
} }
protected override void Init() protected override void Init(IDiagramViewModel root)
{ {
base.Init(); base.Init(root);
this.ClearConnectors(); this.ClearConnectors();
this.AddConnector(new FullyCreatedConnectorInfo(this, ConnectorOrientation.None, true)); this.AddConnector(new FullyCreatedConnectorInfo(this, ConnectorOrientation.None, true));
@@ -29,5 +26,13 @@ namespace AIStudio.Wpf.DiagramDesigner
ItemWidth = 5; ItemWidth = 5;
ItemHeight = 5; ItemHeight = 5;
} }
public Point CurrentLocation
{
get
{
return new Point() { X = Left + ItemWidth / 2, Y = Top + ItemHeight / 2 };
}
}
} }
} }

View File

@@ -9,13 +9,18 @@ using AIStudio.Wpf.DiagramDesigner.Models;
namespace AIStudio.Wpf.DiagramDesigner namespace AIStudio.Wpf.DiagramDesigner
{ {
public class LogicalGateItemViewModelBase : DesignerItemViewModelBase public abstract class LogicalGateItemViewModelBase : DesignerItemViewModelBase
{ {
public SimpleCommand AddInputCommand { get; private set; } public SimpleCommand AddInputCommand { get; private set; }
public SimpleCommand AddOutputCommand { get; private set; } public SimpleCommand AddOutputCommand { get; private set; }
public LogicalGateItemViewModelBase(LogicalType logicalType) : base() public LogicalGateItemViewModelBase(LogicalType logicalType) : this(null, logicalType)
{
}
public LogicalGateItemViewModelBase(IDiagramViewModel root, LogicalType logicalType) : base(root)
{ {
this.LogicalType = logicalType; this.LogicalType = logicalType;
@@ -89,14 +94,14 @@ namespace AIStudio.Wpf.DiagramDesigner
return new LogicalGateDesignerItemBase(this); return new LogicalGateDesignerItemBase(this);
} }
protected override void Init() protected override void Init(IDiagramViewModel root)
{ {
ShowRotate = false; ShowRotate = false;
ShowArrow = false; ShowArrow = false;
AddInputCommand = new SimpleCommand(Command_Enable, para => ExecuteAddInput(para)); AddInputCommand = new SimpleCommand(Command_Enable, para => ExecuteAddInput(para));
AddOutputCommand = new SimpleCommand(Command_Enable, para => ExecuteAddOutput(para)); AddOutputCommand = new SimpleCommand(Command_Enable, para => ExecuteAddOutput(para));
base.Init(); base.Init(root);
} }
private void BuildMenuOptions() private void BuildMenuOptions()
@@ -133,9 +138,9 @@ namespace AIStudio.Wpf.DiagramDesigner
} }
} }
protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase) protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
{ {
base.LoadDesignerItemViewModel(root, designerbase); base.LoadDesignerItemViewModel(designerbase);
if (designerbase is LogicalGateDesignerItemBase designer) if (designerbase is LogicalGateDesignerItemBase designer)
{ {

View File

@@ -10,11 +10,16 @@ namespace AIStudio.Wpf.DiagramDesigner
{ {
protected virtual string Filter { get; set; } = "媒体·|*.*"; protected virtual string Filter { get; set; } = "媒体·|*.*";
public MediaItemViewModel() : base() public MediaItemViewModel() : this(null)
{ {
} }
public MediaItemViewModel(IDiagramViewModel root) : base(root)
{
}
public MediaItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer) public MediaItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{ {
@@ -30,17 +35,17 @@ namespace AIStudio.Wpf.DiagramDesigner
return new MediaDesignerItem(this); return new MediaDesignerItem(this);
} }
protected override void Init() protected override void Init(IDiagramViewModel root)
{ {
base.Init(); base.Init(root);
BuildMenuOptions(); BuildMenuOptions();
} }
protected override void LoadDesignerItemViewModel(IDiagramViewModel parent, SelectableItemBase designerbase) protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
{ {
base.LoadDesignerItemViewModel(parent, designerbase); base.LoadDesignerItemViewModel(designerbase);
if (designerbase is MediaDesignerItem designer) if (designerbase is MediaDesignerItem designer)
{ {

View File

@@ -5,6 +5,28 @@ namespace AIStudio.Wpf.DiagramDesigner
{ {
public class PointDesignerItemViewModel : DesignerItemViewModelBase public class PointDesignerItemViewModel : DesignerItemViewModelBase
{ {
public PointDesignerItemViewModel(Point location) : this(null, location)
{
}
public PointDesignerItemViewModel(IDiagramViewModel root, Point location) : base(root)
{
Left = Math.Max(0, location.X - ItemWidth / 2);
Top = Math.Max(0, location.Y - ItemHeight / 2);
}
protected override void Init(IDiagramViewModel root)
{
base.Init(root);
this.ClearConnectors();
this.AddConnector(new FullyCreatedConnectorInfo(this, ConnectorOrientation.None, true));
ItemWidth = 5;
ItemHeight = 5;
}
private bool _showConnectors = false; private bool _showConnectors = false;
public new bool ShowConnectors public new bool ShowConnectors
{ {
@@ -25,24 +47,5 @@ namespace AIStudio.Wpf.DiagramDesigner
return new Point() { X = Left + ItemWidth / 2, Y = Top + ItemHeight / 2 }; return new Point() { X = Left + ItemWidth / 2, Y = Top + ItemHeight / 2 };
} }
} }
public PointDesignerItemViewModel(Point location) : base()
{
Left = Math.Max(0, location.X - ItemWidth / 2);
Top = Math.Max(0, location.Y - ItemHeight / 2);
}
protected override void Init()
{
base.Init();
this.ClearConnectors();
this.AddConnector(new FullyCreatedConnectorInfo(this, ConnectorOrientation.None, true));
ItemWidth = 5;
ItemHeight = 5;
}
} }
} }

View File

@@ -11,7 +11,33 @@ namespace AIStudio.Wpf.DiagramDesigner
{ {
public class ShapeDesignerItemViewModel : DesignerItemViewModelBase public class ShapeDesignerItemViewModel : DesignerItemViewModelBase
{ {
public List<PointDesignerItemViewModel> PointDesignerItemViewModels { get; set; } public ShapeDesignerItemViewModel(DrawMode drawMode, List<Point> points) : this(null, drawMode, points)
{
}
public ShapeDesignerItemViewModel(IDiagramViewModel root, DrawMode drawMode, List<Point> points) : base(root)
{
DrawMode = drawMode;
ConnectionPoints = points;
ItemWidth = ConnectionPoints.Max(p => p.X) - ConnectionPoints.Min(p => p.X);
ItemHeight = ConnectionPoints.Max(p => p.Y) - ConnectionPoints.Min(p => p.Y);
Left = ConnectionPoints.Min(p => p.X);
Top = ConnectionPoints.Min(p => p.Y);
PointDesignerItemViewModels = new List<PointDesignerItemViewModel>();
ConnectionPoints.ForEach((Action<Point>)(p => {
var item = new PointDesignerItemViewModel(p);
PointDesignerItemViewModels.Add((PointDesignerItemViewModel)item);
}));
PointDesignerItemViewModels.ForEach(p => p.PropertyChanged += PointDesignerItemViewModel_PropertyChanged);
}
public List<PointDesignerItemViewModel> PointDesignerItemViewModels
{
get; set;
}
private List<Point> _connectionPoints; private List<Point> _connectionPoints;
public List<Point> ConnectionPoints public List<Point> ConnectionPoints
@@ -25,7 +51,10 @@ namespace AIStudio.Wpf.DiagramDesigner
SetProperty(ref _connectionPoints, value); SetProperty(ref _connectionPoints, value);
} }
} }
public DrawMode DrawMode { get; set; } public DrawMode DrawMode
{
get; set;
}
private bool _showConnectors = false; private bool _showConnectors = false;
public new bool ShowConnectors public new bool ShowConnectors
@@ -46,26 +75,9 @@ namespace AIStudio.Wpf.DiagramDesigner
} }
} }
public SimpleCommand MenuItemCommand { get; private set; } public SimpleCommand MenuItemCommand
public ShapeDesignerItemViewModel(DrawMode drawMode, List<Point> points) : base()
{ {
DrawMode = drawMode; get; private set;
ConnectionPoints = points;
ItemWidth = ConnectionPoints.Max(p => p.X) - ConnectionPoints.Min(p => p.X);
ItemHeight = ConnectionPoints.Max(p => p.Y) - ConnectionPoints.Min(p => p.Y);
Left = ConnectionPoints.Min(p => p.X);
Top = ConnectionPoints.Min(p => p.Y);
PointDesignerItemViewModels = new List<PointDesignerItemViewModel>();
ConnectionPoints.ForEach((Action<Point>)(p =>
{
var item = new PointDesignerItemViewModel(p);
PointDesignerItemViewModels.Add((PointDesignerItemViewModel)item);
}));
PointDesignerItemViewModels.ForEach(p => p.PropertyChanged += PointDesignerItemViewModel_PropertyChanged);
} }
private void PointDesignerItemViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) private void PointDesignerItemViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
@@ -85,10 +97,10 @@ namespace AIStudio.Wpf.DiagramDesigner
Top = ConnectionPoints.Min(p => p.Y); Top = ConnectionPoints.Min(p => p.Y);
} }
protected override void Init() protected override void Init(IDiagramViewModel root)
{ {
MenuItemCommand = new SimpleCommand(Command_Enable, ExecuteMenuItemCommand); MenuItemCommand = new SimpleCommand(Command_Enable, ExecuteMenuItemCommand);
base.Init(); base.Init(root);
this.ClearConnectors(); this.ClearConnectors();

View File

@@ -7,7 +7,12 @@ namespace AIStudio.Wpf.DiagramDesigner
{ {
public class TextDesignerItemViewModel : DesignerItemViewModelBase public class TextDesignerItemViewModel : DesignerItemViewModelBase
{ {
public TextDesignerItemViewModel() public TextDesignerItemViewModel() : this(null)
{
}
public TextDesignerItemViewModel(IDiagramViewModel root) : base(root)
{ {
} }
@@ -27,9 +32,9 @@ namespace AIStudio.Wpf.DiagramDesigner
return new TextDesignerItem(this); return new TextDesignerItem(this);
} }
protected override void Init() protected override void Init(IDiagramViewModel root)
{ {
base.Init(); base.Init(root);
this.ItemWidth = 150; this.ItemWidth = 150;
this.ClearConnectors(); this.ClearConnectors();

View File

@@ -10,16 +10,20 @@ namespace AIStudio.Wpf.DiagramDesigner
{ {
protected override string Filter { get; set; } = "视频|*.wmv;*.asf;*.asx;*.rm;*.rmvb;*.mp4;*.3gp;*.mov;*.m4v;*.avi;*.dat;*.mkv;*.flv;*.vob"; protected override string Filter { get; set; } = "视频|*.wmv;*.asf;*.asx;*.rm;*.rmvb;*.mp4;*.3gp;*.mov;*.m4v;*.avi;*.dat;*.mkv;*.flv;*.vob";
public VideoItemViewModel() : base() public VideoItemViewModel() : this(null)
{ {
} }
public VideoItemViewModel(IDiagramViewModel root) : base(root)
{
}
public VideoItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer) public VideoItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{ {
} }
public VideoItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) public VideoItemViewModel(IDiagramViewModel root, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
{ {

View File

@@ -12,7 +12,12 @@ namespace AIStudio.Wpf.Flowchart.ViewModels
{ {
protected IUIVisualizerService visualiserService; protected IUIVisualizerService visualiserService;
public FlowNode(NodeKinds kind) : base() public FlowNode(NodeKinds kind) : this(null, kind)
{
}
public FlowNode(IDiagramViewModel root, NodeKinds kind) : base(root)
{ {
Kind = kind; Kind = kind;
Text = Kind.GetDescription(); Text = Kind.GetDescription();
@@ -33,9 +38,9 @@ namespace AIStudio.Wpf.Flowchart.ViewModels
return new FlowNodeDesignerItem(this); return new FlowNodeDesignerItem(this);
} }
protected override void Init() protected override void Init(IDiagramViewModel root)
{ {
base.Init(); base.Init(root);
ShowRotate = false; ShowRotate = false;
ShowText = true; ShowText = true;
@@ -44,9 +49,9 @@ namespace AIStudio.Wpf.Flowchart.ViewModels
visualiserService = ApplicationServicesProvider.Instance.Provider.VisualizerService; visualiserService = ApplicationServicesProvider.Instance.Provider.VisualizerService;
} }
protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase) protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
{ {
base.LoadDesignerItemViewModel(root, designerbase); base.LoadDesignerItemViewModel(designerbase);
if (designerbase is FlowNodeDesignerItem designer) if (designerbase is FlowNodeDesignerItem designer)
{ {
@@ -125,7 +130,12 @@ namespace AIStudio.Wpf.Flowchart.ViewModels
public class StartFlowNode : FlowNode public class StartFlowNode : FlowNode
{ {
public StartFlowNode() : base(NodeKinds.Start) public StartFlowNode() : this(null)
{
}
public StartFlowNode(IDiagramViewModel root) : base(root, NodeKinds.Start)
{ {
} }
@@ -143,7 +153,12 @@ namespace AIStudio.Wpf.Flowchart.ViewModels
public class EndFlowNode : FlowNode public class EndFlowNode : FlowNode
{ {
public EndFlowNode() : base(NodeKinds.End) public EndFlowNode() : this(null)
{
}
public EndFlowNode(IDiagramViewModel root) : base(root, NodeKinds.End)
{ {
} }
@@ -161,7 +176,12 @@ namespace AIStudio.Wpf.Flowchart.ViewModels
public class DecideFlowNode : FlowNode public class DecideFlowNode : FlowNode
{ {
public DecideFlowNode() : base(NodeKinds.Decide) public DecideFlowNode() : this(null)
{
}
public DecideFlowNode(IDiagramViewModel root) : base(root, NodeKinds.Decide)
{ {
} }
@@ -179,7 +199,12 @@ namespace AIStudio.Wpf.Flowchart.ViewModels
public class COBeginFlowNode : FlowNode public class COBeginFlowNode : FlowNode
{ {
public COBeginFlowNode() : base(NodeKinds.COBegin) public COBeginFlowNode() : this(null)
{
}
public COBeginFlowNode(IDiagramViewModel root) : base(root, NodeKinds.COBegin)
{ {
} }
@@ -197,7 +222,12 @@ namespace AIStudio.Wpf.Flowchart.ViewModels
public class COEndFlowNode : FlowNode public class COEndFlowNode : FlowNode
{ {
public COEndFlowNode() : base(NodeKinds.COEnd) public COEndFlowNode() : this(null)
{
}
public COEndFlowNode(IDiagramViewModel root) : base(root, NodeKinds.COEnd)
{ {
} }

View File

@@ -9,7 +9,12 @@ namespace AIStudio.Wpf.Flowchart.ViewModels
{ {
public class MiddleFlowNode : FlowNode public class MiddleFlowNode : FlowNode
{ {
public MiddleFlowNode() : base(NodeKinds.Middle) public MiddleFlowNode() : this(null)
{
}
public MiddleFlowNode(IDiagramViewModel root) : base(root, NodeKinds.Middle)
{ {
} }

View File

@@ -8,10 +8,15 @@ using AIStudio.Wpf.DiagramDesigner.Services;
namespace AIStudio.Wpf.Logical.ViewModels namespace AIStudio.Wpf.Logical.ViewModels
{ {
public class LogicalGateItemViewModel : LogicalGateItemViewModelBase public abstract class LogicalGateItemViewModel : LogicalGateItemViewModelBase
{ {
protected IUIVisualizerService visualiserService; protected IUIVisualizerService visualiserService;
public LogicalGateItemViewModel(LogicalType logicalType) : base(logicalType) public LogicalGateItemViewModel(LogicalType logicalType) : this(null, logicalType)
{
ColorViewModel.FillColor.Color = Colors.Orange;
}
public LogicalGateItemViewModel(IDiagramViewModel root, LogicalType logicalType) : base(root, logicalType)
{ {
ColorViewModel.FillColor.Color = Colors.Orange; ColorViewModel.FillColor.Color = Colors.Orange;
} }
@@ -31,16 +36,16 @@ namespace AIStudio.Wpf.Logical.ViewModels
return new LogicalGateDesignerItemBase(this); return new LogicalGateDesignerItemBase(this);
} }
protected override void Init() protected override void Init(IDiagramViewModel root)
{ {
base.Init(); base.Init(root);
visualiserService = ApplicationServicesProvider.Instance.Provider.VisualizerService; visualiserService = ApplicationServicesProvider.Instance.Provider.VisualizerService;
} }
protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase) protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
{ {
base.LoadDesignerItemViewModel(root, designerbase); base.LoadDesignerItemViewModel(designerbase);
if (designerbase is LogicalGateDesignerItemBase designer) if (designerbase is LogicalGateDesignerItemBase designer)
{ {
@@ -72,7 +77,11 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class AddGateItemViewModel : LogicalGateItemViewModel public class AddGateItemViewModel : LogicalGateItemViewModel
{ {
public AddGateItemViewModel() : base(LogicalType.ADD) public AddGateItemViewModel() : this(null)
{
}
public AddGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.ADD)
{ {
} }
@@ -88,7 +97,11 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class SubtractGateItemViewModel : LogicalGateItemViewModel public class SubtractGateItemViewModel : LogicalGateItemViewModel
{ {
public SubtractGateItemViewModel() : base(LogicalType.SUB) public SubtractGateItemViewModel() : this(null)
{
}
public SubtractGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.SUB)
{ {
} }
@@ -104,7 +117,11 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class MultiplyGateItemViewModel : LogicalGateItemViewModel public class MultiplyGateItemViewModel : LogicalGateItemViewModel
{ {
public MultiplyGateItemViewModel() : base(LogicalType.MUL) public MultiplyGateItemViewModel() : this(null)
{
}
public MultiplyGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.MUL)
{ {
} }
@@ -121,7 +138,11 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class DivideGateItemViewModel : LogicalGateItemViewModel public class DivideGateItemViewModel : LogicalGateItemViewModel
{ {
public DivideGateItemViewModel() : base(LogicalType.DIV) public DivideGateItemViewModel() : this(null)
{
}
public DivideGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.DIV)
{ {
} }
@@ -137,11 +158,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class AverageGateItemViewModel : LogicalGateItemViewModel public class AverageGateItemViewModel : LogicalGateItemViewModel
{ {
public AverageGateItemViewModel() : base(LogicalType.AVE) public AverageGateItemViewModel() : this(null)
{ {
} }
public AverageGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.AVE)
{
}
public AverageGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer) public AverageGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{ {
@@ -155,11 +180,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class MODGateItemViewModel : LogicalGateItemViewModel public class MODGateItemViewModel : LogicalGateItemViewModel
{ {
public MODGateItemViewModel() : base(LogicalType.MOD) public MODGateItemViewModel() : this(null)
{ {
} }
public MODGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.MOD)
{
}
public MODGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer) public MODGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{ {
@@ -173,11 +202,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class ANDGateItemViewModel : LogicalGateItemViewModel public class ANDGateItemViewModel : LogicalGateItemViewModel
{ {
public ANDGateItemViewModel() : base(LogicalType.AND) public ANDGateItemViewModel() : this(null)
{ {
} }
public ANDGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.AND)
{
}
public ANDGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer) public ANDGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{ {
@@ -191,11 +224,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class ORGateItemViewModel : LogicalGateItemViewModel public class ORGateItemViewModel : LogicalGateItemViewModel
{ {
public ORGateItemViewModel() : base(LogicalType.OR) public ORGateItemViewModel() : this(null)
{ {
} }
public ORGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.OR)
{
}
public ORGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer) public ORGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{ {
@@ -209,11 +246,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class XORGateItemViewModel : LogicalGateItemViewModel public class XORGateItemViewModel : LogicalGateItemViewModel
{ {
public XORGateItemViewModel() : base(LogicalType.XOR) public XORGateItemViewModel() : this(null)
{ {
} }
public XORGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.XOR)
{
}
public XORGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer) public XORGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{ {
@@ -227,11 +268,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class NOTGateItemViewModel : LogicalGateItemViewModel public class NOTGateItemViewModel : LogicalGateItemViewModel
{ {
public NOTGateItemViewModel() : base(LogicalType.NOT) public NOTGateItemViewModel() : this(null)
{ {
} }
public NOTGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.NOT)
{
}
public NOTGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer) public NOTGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{ {
@@ -245,11 +290,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class SHLGateItemViewModel : LogicalGateItemViewModel public class SHLGateItemViewModel : LogicalGateItemViewModel
{ {
public SHLGateItemViewModel() : base(LogicalType.SHL) public SHLGateItemViewModel() : this(null)
{ {
} }
public SHLGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.SHL)
{
}
public SHLGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer) public SHLGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{ {
@@ -263,11 +312,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class SHRGateItemViewModel : LogicalGateItemViewModel public class SHRGateItemViewModel : LogicalGateItemViewModel
{ {
public SHRGateItemViewModel() : base(LogicalType.SHR) public SHRGateItemViewModel() : this(null)
{ {
} }
public SHRGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.SHR)
{
}
public SHRGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer) public SHRGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{ {
@@ -281,11 +334,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class ROLGateItemViewModel : LogicalGateItemViewModel public class ROLGateItemViewModel : LogicalGateItemViewModel
{ {
public ROLGateItemViewModel() : base(LogicalType.ROL) public ROLGateItemViewModel() : this(null)
{ {
} }
public ROLGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.ROL)
{
}
public ROLGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer) public ROLGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{ {
@@ -299,11 +356,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class RORGateItemViewModel : LogicalGateItemViewModel public class RORGateItemViewModel : LogicalGateItemViewModel
{ {
public RORGateItemViewModel() : base(LogicalType.ROR) public RORGateItemViewModel() : this(null)
{ {
} }
public RORGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.ROR)
{
}
public RORGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer) public RORGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{ {
@@ -317,11 +378,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class SELGateItemViewModel : LogicalGateItemViewModel public class SELGateItemViewModel : LogicalGateItemViewModel
{ {
public SELGateItemViewModel() : base(LogicalType.SEL) public SELGateItemViewModel() : this(null)
{ {
} }
public SELGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.SEL)
{
}
public SELGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer) public SELGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{ {
@@ -335,11 +400,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class MAXGateItemViewModel : LogicalGateItemViewModel public class MAXGateItemViewModel : LogicalGateItemViewModel
{ {
public MAXGateItemViewModel() : base(LogicalType.MAX) public MAXGateItemViewModel() : this(null)
{ {
} }
public MAXGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.MAX)
{
}
public MAXGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer) public MAXGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{ {
@@ -353,11 +422,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class MINGateItemViewModel : LogicalGateItemViewModel public class MINGateItemViewModel : LogicalGateItemViewModel
{ {
public MINGateItemViewModel() : base(LogicalType.MIN) public MINGateItemViewModel() : this(null)
{ {
} }
public MINGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.MIN)
{
}
public MINGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer) public MINGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{ {
@@ -371,11 +444,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class LIMITGateItemViewModel : LogicalGateItemViewModel public class LIMITGateItemViewModel : LogicalGateItemViewModel
{ {
public LIMITGateItemViewModel() : base(LogicalType.LIMIT) public LIMITGateItemViewModel() : this(null)
{ {
} }
public LIMITGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.LIMIT)
{
}
public LIMITGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer) public LIMITGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{ {
@@ -389,11 +466,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class GTGateItemViewModel : LogicalGateItemViewModel public class GTGateItemViewModel : LogicalGateItemViewModel
{ {
public GTGateItemViewModel() : base(LogicalType.GT) public GTGateItemViewModel() : this(null)
{ {
} }
public GTGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.GT)
{
}
public GTGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer) public GTGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{ {
@@ -407,11 +488,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class LTGateItemViewModel : LogicalGateItemViewModel public class LTGateItemViewModel : LogicalGateItemViewModel
{ {
public LTGateItemViewModel() : base(LogicalType.GT) public LTGateItemViewModel() : this(null)
{ {
} }
public LTGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.LT)
{
}
public LTGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer) public LTGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{ {
@@ -425,11 +510,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class GEGateItemViewModel : LogicalGateItemViewModel public class GEGateItemViewModel : LogicalGateItemViewModel
{ {
public GEGateItemViewModel() : base(LogicalType.GE) public GEGateItemViewModel() : this(null)
{ {
} }
public GEGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.GE)
{
}
public GEGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer) public GEGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{ {
@@ -443,11 +532,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class LEGateItemViewModel : LogicalGateItemViewModel public class LEGateItemViewModel : LogicalGateItemViewModel
{ {
public LEGateItemViewModel() : base(LogicalType.LE) public LEGateItemViewModel() : this(null)
{ {
} }
public LEGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.LE)
{
}
public LEGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer) public LEGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{ {
@@ -461,11 +554,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class EQGateItemViewModel : LogicalGateItemViewModel public class EQGateItemViewModel : LogicalGateItemViewModel
{ {
public EQGateItemViewModel() : base(LogicalType.LE) public EQGateItemViewModel() : this(null)
{ {
} }
public EQGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.EQ)
{
}
public EQGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer) public EQGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{ {
@@ -479,11 +576,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class NEGateItemViewModel : LogicalGateItemViewModel public class NEGateItemViewModel : LogicalGateItemViewModel
{ {
public NEGateItemViewModel() : base(LogicalType.NE) public NEGateItemViewModel() : this(null)
{ {
} }
public NEGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.NE)
{
}
public NEGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer) public NEGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{ {
@@ -497,11 +598,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class ABSGateItemViewModel : LogicalGateItemViewModel public class ABSGateItemViewModel : LogicalGateItemViewModel
{ {
public ABSGateItemViewModel() : base(LogicalType.ABS) public ABSGateItemViewModel() : this(null)
{ {
} }
public ABSGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.ABS)
{
}
public ABSGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer) public ABSGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{ {
@@ -515,11 +620,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class SQRTGateItemViewModel : LogicalGateItemViewModel public class SQRTGateItemViewModel : LogicalGateItemViewModel
{ {
public SQRTGateItemViewModel() : base(LogicalType.SQRT) public SQRTGateItemViewModel() : this(null)
{ {
} }
public SQRTGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.SQRT)
{
}
public SQRTGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer) public SQRTGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{ {
@@ -533,11 +642,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class LNGateItemViewModel : LogicalGateItemViewModel public class LNGateItemViewModel : LogicalGateItemViewModel
{ {
public LNGateItemViewModel() : base(LogicalType.LN) public LNGateItemViewModel() : this(null)
{ {
} }
public LNGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.LN)
{
}
public LNGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer) public LNGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{ {
@@ -551,11 +664,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class LOGGateItemViewModel : LogicalGateItemViewModel public class LOGGateItemViewModel : LogicalGateItemViewModel
{ {
public LOGGateItemViewModel() : base(LogicalType.LOG) public LOGGateItemViewModel() : this(null)
{ {
} }
public LOGGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.LOG)
{
}
public LOGGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer) public LOGGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{ {
@@ -569,11 +686,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class EXPGateItemViewModel : LogicalGateItemViewModel public class EXPGateItemViewModel : LogicalGateItemViewModel
{ {
public EXPGateItemViewModel() : base(LogicalType.EXP) public EXPGateItemViewModel() : this(null)
{ {
} }
public EXPGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.EXP)
{
}
public EXPGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer) public EXPGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{ {
@@ -587,11 +708,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class SINGateItemViewModel : LogicalGateItemViewModel public class SINGateItemViewModel : LogicalGateItemViewModel
{ {
public SINGateItemViewModel() : base(LogicalType.SIN) public SINGateItemViewModel() : this(null)
{ {
} }
public SINGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.SIN)
{
}
public SINGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer) public SINGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{ {
@@ -605,11 +730,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class COSGateItemViewModel : LogicalGateItemViewModel public class COSGateItemViewModel : LogicalGateItemViewModel
{ {
public COSGateItemViewModel() : base(LogicalType.COS) public COSGateItemViewModel() : this(null)
{ {
} }
public COSGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.COS)
{
}
public COSGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer) public COSGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{ {
@@ -623,11 +752,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class TANGateItemViewModel : LogicalGateItemViewModel public class TANGateItemViewModel : LogicalGateItemViewModel
{ {
public TANGateItemViewModel() : base(LogicalType.TAN) public TANGateItemViewModel() : this(null)
{ {
} }
public TANGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.TAN)
{
}
public TANGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer) public TANGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{ {
@@ -641,11 +774,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class ASINGateItemViewModel : LogicalGateItemViewModel public class ASINGateItemViewModel : LogicalGateItemViewModel
{ {
public ASINGateItemViewModel() : base(LogicalType.ASIN) public ASINGateItemViewModel() : this(null)
{ {
} }
public ASINGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.ASIN)
{
}
public ASINGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer) public ASINGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{ {
@@ -659,11 +796,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class ACOSGateItemViewModel : LogicalGateItemViewModel public class ACOSGateItemViewModel : LogicalGateItemViewModel
{ {
public ACOSGateItemViewModel() : base(LogicalType.ACOS) public ACOSGateItemViewModel() : this(null)
{ {
} }
public ACOSGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.ACOS)
{
}
public ACOSGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer) public ACOSGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{ {
@@ -677,11 +818,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class ATANGateItemViewModel : LogicalGateItemViewModel public class ATANGateItemViewModel : LogicalGateItemViewModel
{ {
public ATANGateItemViewModel() : base(LogicalType.ATAN) public ATANGateItemViewModel() : this(null)
{ {
} }
public ATANGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.ATAN)
{
}
public ATANGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer) public ATANGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{ {
@@ -695,11 +840,15 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class EXPTGateItemViewModel : LogicalGateItemViewModel public class EXPTGateItemViewModel : LogicalGateItemViewModel
{ {
public EXPTGateItemViewModel() : base(LogicalType.EXPT) public EXPTGateItemViewModel() : this(null)
{ {
} }
public EXPTGateItemViewModel(IDiagramViewModel root) : base(root, LogicalType.EXPT)
{
}
public EXPTGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer) public EXPTGateItemViewModel(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
{ {
@@ -713,7 +862,12 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class ConstantDesignerItemViewModel : LogicalGateItemViewModel public class ConstantDesignerItemViewModel : LogicalGateItemViewModel
{ {
public ConstantDesignerItemViewModel() : base(LogicalType.Constant) public ConstantDesignerItemViewModel() : this(null)
{
}
public ConstantDesignerItemViewModel(IDiagramViewModel root) : base(root, LogicalType.Constant)
{ {
ItemHeight = 28; ItemHeight = 28;
} }
@@ -731,7 +885,11 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class InputItemViewModel : LogicalGateItemViewModel public class InputItemViewModel : LogicalGateItemViewModel
{ {
public InputItemViewModel() : base(LogicalType.Input) public InputItemViewModel() : this(null)
{
}
public InputItemViewModel(IDiagramViewModel root) : base(root, LogicalType.Input)
{ {
ItemHeight = 28; ItemHeight = 28;
} }
@@ -746,9 +904,9 @@ namespace AIStudio.Wpf.Logical.ViewModels
} }
protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase) protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
{ {
base.LoadDesignerItemViewModel(root, designerbase); base.LoadDesignerItemViewModel(designerbase);
if (designerbase is LogicalGateDesignerItemBase designer) if (designerbase is LogicalGateDesignerItemBase designer)
{ {
@@ -790,7 +948,12 @@ namespace AIStudio.Wpf.Logical.ViewModels
public class OutputItemViewModel : LogicalGateItemViewModel public class OutputItemViewModel : LogicalGateItemViewModel
{ {
public OutputItemViewModel() : base(LogicalType.Output) public OutputItemViewModel() : this(null)
{
}
public OutputItemViewModel(IDiagramViewModel root) : base(root, LogicalType.Output)
{ {
ItemHeight = 28; ItemHeight = 28;
} }
@@ -805,9 +968,9 @@ namespace AIStudio.Wpf.Logical.ViewModels
} }
protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase) protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
{ {
base.LoadDesignerItemViewModel(root, designerbase); base.LoadDesignerItemViewModel(designerbase);
if (designerbase is LogicalGateDesignerItemBase designer) if (designerbase is LogicalGateDesignerItemBase designer)
{ {
@@ -853,7 +1016,12 @@ namespace AIStudio.Wpf.Logical.ViewModels
private System.Timers.Timer readDataTimer = new System.Timers.Timer(); private System.Timers.Timer readDataTimer = new System.Timers.Timer();
public Action Do; public Action Do;
public TimerDesignerItemViewModel() : base(LogicalType.Time) public TimerDesignerItemViewModel() : this(null)
{
}
public TimerDesignerItemViewModel(IDiagramViewModel root) : base(root, LogicalType.Time)
{ {
ItemHeight = 32; ItemHeight = 32;
ItemWidth = 32; ItemWidth = 32;
@@ -872,18 +1040,18 @@ namespace AIStudio.Wpf.Logical.ViewModels
BuildMenuOptions(); BuildMenuOptions();
} }
protected override void Init() protected override void Init(IDiagramViewModel root)
{ {
MenuItemCommand = new SimpleCommand(Command_Enable, ExecuteMenuItemCommand); base.Init(root);
base.Init();
MenuItemCommand = new SimpleCommand(Command_Enable, ExecuteMenuItemCommand);
readDataTimer.Elapsed += timeCycle; readDataTimer.Elapsed += timeCycle;
readDataTimer.Interval = 1000; readDataTimer.Interval = 1000;
} }
protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase) protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
{ {
base.LoadDesignerItemViewModel(root, designerbase); base.LoadDesignerItemViewModel(designerbase);
if (IsEnabled) if (IsEnabled)
{ {

View File

@@ -8,7 +8,12 @@ namespace AIStudio.Wpf.SFC.ViewModels
{ {
public class SFCCOBeginNode : SFCNode public class SFCCOBeginNode : SFCNode
{ {
public SFCCOBeginNode() : base(SFCNodeKinds.COBegin) public SFCCOBeginNode() : this(null)
{
}
public SFCCOBeginNode(IDiagramViewModel root) : base(root, SFCNodeKinds.COBegin)
{ {
ItemWidth = 280; ItemWidth = 280;
ItemHeight = 10; ItemHeight = 10;

View File

@@ -8,7 +8,12 @@ namespace AIStudio.Wpf.SFC.ViewModels
{ {
public class SFCCOEndNode : SFCNode public class SFCCOEndNode : SFCNode
{ {
public SFCCOEndNode() : base(SFCNodeKinds.COEnd) public SFCCOEndNode() : this(null)
{
}
public SFCCOEndNode(IDiagramViewModel root) : base(root, SFCNodeKinds.COEnd)
{ {
ItemWidth = 280; ItemWidth = 280;
ItemHeight = 10; ItemHeight = 10;

View File

@@ -11,11 +11,16 @@ namespace AIStudio.Wpf.SFC.ViewModels
{ {
public class SFCConditionNode : SFCNode public class SFCConditionNode : SFCNode
{ {
public SFCConditionNode() : base(SFCNodeKinds.Condition) public SFCConditionNode() : this(null)
{
}
public SFCConditionNode(IDiagramViewModel root) : base(root, SFCNodeKinds.Condition)
{ {
ColorViewModel.LineColor.Color = Colors.Black; ColorViewModel.LineColor.Color = Colors.Black;
ItemWidth = 30; ItemWidth = 30;
ItemHeight = 30; ItemHeight = 30;
ExecuteAddTopInput(null); ExecuteAddTopInput(null);
ExecuteAddBottomOutput(null); ExecuteAddBottomOutput(null);
@@ -30,9 +35,9 @@ namespace AIStudio.Wpf.SFC.ViewModels
} }
protected override void Init() protected override void Init(IDiagramViewModel root)
{ {
base.Init(); base.Init(root);
} }
private bool _showText; private bool _showText;

View File

@@ -14,7 +14,12 @@ namespace AIStudio.Wpf.SFC.ViewModels
{ {
protected IUIVisualizerService visualiserService; protected IUIVisualizerService visualiserService;
public SFCNode(SFCNodeKinds kind) : base() public SFCNode(SFCNodeKinds kind) : this(null, kind)
{
}
public SFCNode(IDiagramViewModel root, SFCNodeKinds kind) : base(root)
{ {
ColorViewModel.FillColor.Color = Colors.Blue; ColorViewModel.FillColor.Color = Colors.Blue;
Kind = kind; Kind = kind;
@@ -37,7 +42,7 @@ namespace AIStudio.Wpf.SFC.ViewModels
return new SFCNodeDesignerItem(this); return new SFCNodeDesignerItem(this);
} }
protected override void Init() protected override void Init(IDiagramViewModel root)
{ {
IsInnerConnector = true; IsInnerConnector = true;
ShowRotate = false; ShowRotate = false;
@@ -45,14 +50,14 @@ namespace AIStudio.Wpf.SFC.ViewModels
ShowText = true; ShowText = true;
IsReadOnlyText = true; IsReadOnlyText = true;
base.Init(); base.Init(root);
visualiserService = ApplicationServicesProvider.Instance.Provider.VisualizerService; visualiserService = ApplicationServicesProvider.Instance.Provider.VisualizerService;
} }
protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase) protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
{ {
base.LoadDesignerItemViewModel(root, designerbase); base.LoadDesignerItemViewModel(designerbase);
if (designerbase is SFCNodeDesignerItem designer) if (designerbase is SFCNodeDesignerItem designer)
{ {

View File

@@ -8,7 +8,12 @@ namespace AIStudio.Wpf.SFC.ViewModels
{ {
public class SFCStartNode : SFCNode public class SFCStartNode : SFCNode
{ {
public SFCStartNode() : base(SFCNodeKinds.Start) public SFCStartNode() : this(null)
{
}
public SFCStartNode(IDiagramViewModel root) : base(root, SFCNodeKinds.Start)
{ {
ExecuteAddTopInput(null); ExecuteAddTopInput(null);
ExecuteAddBottomOutput(null); ExecuteAddBottomOutput(null);

View File

@@ -11,7 +11,12 @@ namespace AIStudio.Wpf.SFC.ViewModels
public class Simulate_SolenoidViewModel : SFCNode public class Simulate_SolenoidViewModel : SFCNode
{ {
private IDisposable diChangedSubscription; private IDisposable diChangedSubscription;
public Simulate_SolenoidViewModel() : base(SFCNodeKinds.Simulate_Solenoid) public Simulate_SolenoidViewModel() : this(null)
{
}
public Simulate_SolenoidViewModel(IDiagramViewModel root) : base(root, SFCNodeKinds.Simulate_Solenoid)
{ {
ItemWidth = 32; ItemWidth = 32;
ItemHeight = 32; ItemHeight = 32;
@@ -29,9 +34,9 @@ namespace AIStudio.Wpf.SFC.ViewModels
} }
protected override void Init() protected override void Init(IDiagramViewModel root)
{ {
base.Init(); base.Init(root);
if (diChangedSubscription != null) if (diChangedSubscription != null)
{ {
diChangedSubscription.Dispose(); diChangedSubscription.Dispose();

View File

@@ -8,7 +8,12 @@ namespace AIStudio.Wpf.SFC.ViewModels
{ {
public class Simulate_StartViewModel : SFCNode public class Simulate_StartViewModel : SFCNode
{ {
public Simulate_StartViewModel() : base(SFCNodeKinds.Simulate_Start) public Simulate_StartViewModel() : this(null)
{
}
public Simulate_StartViewModel(IDiagramViewModel root) : base(root, SFCNodeKinds.Simulate_Start)
{ {
ItemWidth = 32; ItemWidth = 32;
ItemHeight = 32; ItemHeight = 32;

View File

@@ -9,7 +9,12 @@ namespace AIStudio.Wpf.SFC.ViewModels
{ {
public class Simulate_TankViewModel : SFCNode public class Simulate_TankViewModel : SFCNode
{ {
public Simulate_TankViewModel() : base(SFCNodeKinds.Simulate_Tank) public Simulate_TankViewModel() : this(null)
{
}
public Simulate_TankViewModel(IDiagramViewModel root) : base(root, SFCNodeKinds.Simulate_Tank)
{ {
ItemWidth = 50; ItemWidth = 50;
ItemHeight = 120; ItemHeight = 120;