mirror of
https://gitee.com/akwkevin/aistudio.-wpf.-diagram
synced 2026-03-03 00:00:57 +08:00
C# 脚本模块正式发布
This commit is contained in:
@@ -131,9 +131,34 @@
|
||||
<ProjectReference Include="..\Extensions\AIStudio.Wpf.Flowchart\AIStudio.Wpf.Flowchart.csproj" />
|
||||
<ProjectReference Include="..\Extensions\AIStudio.Wpf.Logical\AIStudio.Wpf.Logical.csproj" />
|
||||
<ProjectReference Include="..\Extensions\AIStudio.Wpf.Mind\AIStudio.Wpf.Mind.csproj" />
|
||||
<ProjectReference Include="..\Extensions\AIStudio.Wpf.Script\AIStudio.Wpf.Script.csproj" />
|
||||
<ProjectReference Include="..\Extensions\AIStudio.Wpf.SFC\AIStudio.Wpf.SFC.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Condition="'$(TargetFramework)' == 'net5.0-windows'">
|
||||
<Reference Include="AIStudio.Wpf.Script.Core">
|
||||
<HintPath>..\Extensions\AIStudio.Wpf.Script\Dlls\net5.0-windows\AIStudio.Wpf.Script.Core.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Condition="'$(TargetFramework)' == 'net6.0-windows'">
|
||||
<Reference Include="AIStudio.Wpf.Script.Core">
|
||||
<HintPath>..\Extensions\AIStudio.Wpf.Script\Dlls\net6.0-windows\AIStudio.Wpf.Script.Core.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Condition="'$(TargetFramework)' == 'netcoreapp3.1'">
|
||||
<Reference Include="AIStudio.Wpf.Script.Core">
|
||||
<HintPath>..\Extensions\AIStudio.Wpf.Script\Dlls\netcoreapp3.1\AIStudio.Wpf.Script.Core.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Condition="'$(TargetFramework)' == 'net461'">
|
||||
<Reference Include="AIStudio.Wpf.Script.Core">
|
||||
<HintPath>..\Extensions\AIStudio.Wpf.Script\Dlls\net461\AIStudio.Wpf.Script.Core.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Resource Include="Icons\App.ico" />
|
||||
<Resource Include="Images\AlignObjectsBottom.png" />
|
||||
|
||||
@@ -8,12 +8,15 @@
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
<ResourceDictionary Source="pack://application:,,,/Fluent;component/Themes/Generic.xaml" />
|
||||
<ResourceDictionary Source="pack://application:,,,/Dragablz;component/Themes/Generic.xaml" />
|
||||
<ResourceDictionary Source="/AIStudio.Wpf.DiagramApp;component/Themes/Generic.xaml" />
|
||||
<ResourceDictionary Source="pack://application:,,,/AIStudio.Wpf.DiagramApp;component/Themes/Generic.xaml" />
|
||||
<ResourceDictionary Source="pack://application:,,,/AIStudio.Wpf.Flowchart;component/Themes/FlowNode.xaml"/>
|
||||
<ResourceDictionary Source="pack://application:,,,/AIStudio.Wpf.Logical;component/Themes/LogicalGateItemViewModel.xaml"/>
|
||||
<ResourceDictionary Source="pack://application:,,,/AIStudio.Wpf.SFC;component/Themes/SFCNode.xaml"/>
|
||||
<ResourceDictionary Source="pack://application:,,,/AIStudio.Wpf.Mind;component/Themes/MindNode.xaml"/>
|
||||
<ResourceDictionary Source="pack://application:,,,/AIStudio.Wpf.Mind;component/Themes/Generic.xaml"/>
|
||||
<ResourceDictionary Source="pack://application:,,,/AIStudio.Wpf.Script.Core;component/Themes/RoslynScriptViewModel.xaml" />
|
||||
<ResourceDictionary Source="pack://application:,,,/AIStudio.Wpf.Script;component/Themes/ColorBoxFactoryScriptViewModel.xaml" />
|
||||
<ResourceDictionary Source="pack://application:,,,/AIStudio.Wpf.Script;component/Themes/ColorBoxCollectorScriptViewModel.xaml" />
|
||||
</ResourceDictionary.MergedDictionaries>
|
||||
</ResourceDictionary>
|
||||
</Application.Resources>
|
||||
|
||||
@@ -1,15 +1,30 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Timers;
|
||||
using System.Windows;
|
||||
using System.Windows.Media;
|
||||
using AIStudio.Wpf.DiagramApp.Models;
|
||||
using AIStudio.Wpf.DiagramDesigner;
|
||||
using AIStudio.Wpf.Script.Core.Helpers;
|
||||
using AIStudio.Wpf.Script.Core.Models;
|
||||
using AIStudio.Wpf.Script.Core.ViewModels;
|
||||
using AIStudio.Wpf.Script.ViewModels;
|
||||
using AIStudio.Wpf.SFC;
|
||||
using Microsoft.CodeAnalysis;
|
||||
|
||||
namespace AIStudio.Wpf.DiagramApp.ViewModels
|
||||
{
|
||||
public class ScriptViewModel : PageViewModel
|
||||
{
|
||||
static ScriptViewModel()
|
||||
{
|
||||
TextEditorThemeHelper.SetCurrentTheme("VS2019_Dark");
|
||||
}
|
||||
|
||||
public ScriptViewModel(string title, string status, DiagramType diagramType) : base(title, status, diagramType)
|
||||
{
|
||||
Init(true);
|
||||
@@ -19,17 +34,177 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels
|
||||
{
|
||||
if (DiagramViewModel != null)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
readDataTimer.Elapsed += timeCycle;
|
||||
readDataTimer.Interval = 1000;
|
||||
readDataTimer.AutoReset = false;
|
||||
readDataTimer.Start();
|
||||
}
|
||||
|
||||
protected override void InitDiagramViewModel()
|
||||
{
|
||||
base.InitDiagramViewModel();
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
private System.Timers.Timer readDataTimer = new System.Timers.Timer();
|
||||
protected override void Init(bool initNew)
|
||||
{
|
||||
base.Init(initNew);
|
||||
|
||||
ConsoleLogViewModel logNode = new ConsoleLogViewModel(DiagramViewModel) { Name = "Log", Left = 150, Top = 420 };
|
||||
DiagramViewModel.Add(logNode);
|
||||
|
||||
IntScriptViewModel intLog = new IntScriptViewModel(DiagramViewModel) { Name = "Int", Left = 40, Top = 220 };
|
||||
DiagramViewModel.Add(intLog);
|
||||
|
||||
ColorBoxFactoryScriptViewModel factoryNode = new ColorBoxFactoryScriptViewModel(DiagramViewModel) { Name = "ColorBoxFactory", Left = 150, Top = 150 };
|
||||
DiagramViewModel.Add(factoryNode);
|
||||
|
||||
BoolScriptViewModel boolNode = new BoolScriptViewModel(DiagramViewModel) { Name = "Bool", TrueString = "形状", FalseString = "颜色", Left = 410, Top = 190 };
|
||||
DiagramViewModel.Add(boolNode);
|
||||
|
||||
ColorBoxSwitchScriptViewModel switchNode = new ColorBoxSwitchScriptViewModel(DiagramViewModel) { Name = "ColorBoxSwitch", Left = 500, Top = 150 };
|
||||
DiagramViewModel.Add(switchNode);
|
||||
|
||||
TextScriptViewModel textNode = new TextScriptViewModel(DiagramViewModel) { Name = "Text", Text = "AIStudio Diagram", Left = 150, Top = 50, ItemWidth = 450, ItemHeight = 60 };
|
||||
DiagramViewModel.Add(textNode);
|
||||
|
||||
ColorBoxIfScriptViewModel ifNode = new ColorBoxIfScriptViewModel(DiagramViewModel) { Name = "ColorBoxIf", Left = 660, Top = 60 };
|
||||
DiagramViewModel.Add(ifNode);
|
||||
|
||||
ColorBoxCollectorScriptViewModel collectorNode1_1 = new ColorBoxCollectorScriptViewModel(DiagramViewModel) { Name = "Collector1_1", Left = 790, Top = 40 };
|
||||
collectorNode1_1.Tag = new ColorBoxModel("红色|圆形", "M 10,20 A 20,20 0 1 1 50,20 A 20,20 0 1 1 10,20", Colors.Red);
|
||||
DiagramViewModel.Add(collectorNode1_1);
|
||||
|
||||
ColorBoxCollectorScriptViewModel collectorNode1_2 = new ColorBoxCollectorScriptViewModel(DiagramViewModel) { Name = "Collector1_2", Left = 790, Top = 120 };
|
||||
collectorNode1_2.Tag = new ColorBoxModel("红色|圆形", "M 10,20 A 20,20 0 1 1 50,20 A 20,20 0 1 1 10,20", Colors.Red);
|
||||
DiagramViewModel.Add(collectorNode1_2);
|
||||
|
||||
ColorBoxCollectorScriptViewModel collectorNode2 = new ColorBoxCollectorScriptViewModel(DiagramViewModel) { Name = "Collector2", Left = 790, Top = 220 };
|
||||
collectorNode2.Tag = new ColorBoxModel("橙色|三角形", "M1,21H23L12,2", Colors.Orange);
|
||||
DiagramViewModel.Add(collectorNode2);
|
||||
|
||||
ColorBoxCollectorScriptViewModel collectorNode3 = new ColorBoxCollectorScriptViewModel(DiagramViewModel) { Name = "Collector3", Left = 790, Top = 305 };
|
||||
collectorNode3.Tag = new ColorBoxModel("黄色|方形", "M3,3V21H21V3", Colors.Yellow);
|
||||
DiagramViewModel.Add(collectorNode3);
|
||||
|
||||
ColorBoxCollectorScriptViewModel collectorNode4 = new ColorBoxCollectorScriptViewModel(DiagramViewModel) { Name = "Collector4", Left = 790, Top = 390 };
|
||||
collectorNode4.Tag = new ColorBoxModel("绿色|菱形", "M 0,20 L 30 0 L 60,20 L 30,40 Z", Colors.Green);
|
||||
DiagramViewModel.Add(collectorNode4);
|
||||
|
||||
ColorBoxCollectorScriptViewModel collectorNode5 = new ColorBoxCollectorScriptViewModel(DiagramViewModel) { Name = "Collector5", Left = 790, Top = 475 };
|
||||
collectorNode5.Tag = new ColorBoxModel("青色|梯形", "M 0 0 H 60 L 50 40 H 10 Z", Colors.Cyan);
|
||||
DiagramViewModel.Add(collectorNode5);
|
||||
|
||||
ColorBoxCollectorScriptViewModel collectorNode6 = new ColorBoxCollectorScriptViewModel(DiagramViewModel) { Name = "Collector6", Left = 790, Top = 560 };
|
||||
collectorNode6.Tag = new ColorBoxModel("蓝色|五角星", "M 9,2 11,7 17,7 12,10 14,15 9,12 4,15 6,10 1,7 7,7 Z", Colors.Blue);
|
||||
DiagramViewModel.Add(collectorNode6);
|
||||
|
||||
ColorBoxCollectorScriptViewModel collectorNode7 = new ColorBoxCollectorScriptViewModel(DiagramViewModel) { Name = "Collector7", Left = 790, Top = 645 };
|
||||
collectorNode7.Tag = new ColorBoxModel("紫色|六边形", "M 0,20 L 10,0 H 50 L 60,20 L 50,40 H10 Z", Colors.Purple);
|
||||
DiagramViewModel.Add(collectorNode7);
|
||||
|
||||
ConnectionViewModel int_factoryConnector = new ConnectionViewModel(DiagramViewModel, intLog.Output[0], factoryNode.Input[0], DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal);
|
||||
DiagramViewModel.Add(int_factoryConnector);
|
||||
|
||||
ConnectionViewModel bool_switchConnector = new ConnectionViewModel(DiagramViewModel, boolNode.Output[0], switchNode.Input[0], DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal);
|
||||
DiagramViewModel.Add(bool_switchConnector);
|
||||
|
||||
ConnectionViewModel factory_switchConnector = new ConnectionViewModel(DiagramViewModel, factoryNode.Output[0], switchNode.Input[1], DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal);
|
||||
factory_switchConnector.AnimationViewModel.Repeat = false;
|
||||
factory_switchConnector.AnimationViewModel.Animation = LineAnimation.PathAnimation;
|
||||
DiagramViewModel.Add(factory_switchConnector);
|
||||
|
||||
ConnectionViewModel switch_textConnector = new ConnectionViewModel(DiagramViewModel, switchNode.Output[0], textNode.Input[0], DrawMode.ConnectingLineStraight, RouterMode.RouterOrthogonal);
|
||||
switch_textConnector.SetPathGeneratorParameter(null, null, 5, 10);
|
||||
DiagramViewModel.Add(switch_textConnector);
|
||||
|
||||
ConnectionViewModel switch_ifConnector = new ConnectionViewModel(DiagramViewModel, switchNode.Output[1], ifNode.Input[2], DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal);
|
||||
switch_ifConnector.AnimationViewModel.Repeat = false;
|
||||
switch_ifConnector.AnimationViewModel.Animation = LineAnimation.PathAnimation;
|
||||
DiagramViewModel.Add(switch_ifConnector);
|
||||
|
||||
ConnectionViewModel if_collector1_1Connector = new ConnectionViewModel(DiagramViewModel, ifNode.Output[0], collectorNode1_1.Input[0], DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal);
|
||||
if_collector1_1Connector.AnimationViewModel.Repeat = false;
|
||||
if_collector1_1Connector.AnimationViewModel.Animation = LineAnimation.PathAnimation;
|
||||
DiagramViewModel.Add(if_collector1_1Connector);
|
||||
|
||||
ConnectionViewModel if_collector1_2Connector = new ConnectionViewModel(DiagramViewModel, ifNode.Output[1], collectorNode1_2.Input[0], DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal);
|
||||
if_collector1_2Connector.AnimationViewModel.Repeat = false;
|
||||
if_collector1_2Connector.AnimationViewModel.Animation = LineAnimation.PathAnimation;
|
||||
DiagramViewModel.Add(if_collector1_2Connector);
|
||||
|
||||
ConnectionViewModel collector1_1_if_Connector = new ConnectionViewModel(DiagramViewModel, collectorNode1_1.Output[0], ifNode.Input[0], DrawMode.ConnectingLineStraight, RouterMode.RouterOrthogonal);
|
||||
collector1_1_if_Connector.SetPathGeneratorParameter(null, null, 5, 30);
|
||||
DiagramViewModel.Add(collector1_1_if_Connector);
|
||||
|
||||
ConnectionViewModel collector1_2_if_Connector = new ConnectionViewModel(DiagramViewModel, collectorNode1_2.Output[0], ifNode.Input[1], DrawMode.ConnectingLineStraight, RouterMode.RouterOrthogonal);
|
||||
collector1_2_if_Connector.SetPathGeneratorParameter(null, null, 5, 10);
|
||||
DiagramViewModel.Add(collector1_2_if_Connector);
|
||||
|
||||
ConnectionViewModel switch_collector2Connector = new ConnectionViewModel(DiagramViewModel, switchNode.Output[2], collectorNode2.Input[0], DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal);
|
||||
switch_collector2Connector.AnimationViewModel.Repeat = false;
|
||||
switch_collector2Connector.AnimationViewModel.Animation = LineAnimation.PathAnimation;
|
||||
DiagramViewModel.Add(switch_collector2Connector);
|
||||
|
||||
ConnectionViewModel switch_collector3Connector = new ConnectionViewModel(DiagramViewModel, switchNode.Output[3], collectorNode3.Input[0], DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal);
|
||||
switch_collector3Connector.AnimationViewModel.Repeat = false;
|
||||
switch_collector3Connector.AnimationViewModel.Animation = LineAnimation.PathAnimation;
|
||||
DiagramViewModel.Add(switch_collector3Connector);
|
||||
|
||||
ConnectionViewModel switch_collector4Connector = new ConnectionViewModel(DiagramViewModel, switchNode.Output[4], collectorNode4.Input[0], DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal);
|
||||
switch_collector4Connector.AnimationViewModel.Repeat = false;
|
||||
switch_collector4Connector.AnimationViewModel.Animation = LineAnimation.PathAnimation;
|
||||
DiagramViewModel.Add(switch_collector4Connector);
|
||||
|
||||
ConnectionViewModel switch_collector5Connector = new ConnectionViewModel(DiagramViewModel, switchNode.Output[5], collectorNode5.Input[0], DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal);
|
||||
switch_collector5Connector.AnimationViewModel.Repeat = false;
|
||||
switch_collector5Connector.AnimationViewModel.Animation = LineAnimation.PathAnimation;
|
||||
DiagramViewModel.Add(switch_collector5Connector);
|
||||
|
||||
ConnectionViewModel switch_collector6Connector = new ConnectionViewModel(DiagramViewModel, switchNode.Output[6], collectorNode6.Input[0], DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal);
|
||||
switch_collector6Connector.AnimationViewModel.Repeat = false;
|
||||
switch_collector6Connector.AnimationViewModel.Animation = LineAnimation.PathAnimation;
|
||||
DiagramViewModel.Add(switch_collector6Connector);
|
||||
|
||||
ConnectionViewModel switch_collector7Connector = new ConnectionViewModel(DiagramViewModel, switchNode.Output[7], collectorNode7.Input[0], DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal);
|
||||
switch_collector7Connector.AnimationViewModel.Repeat = false;
|
||||
switch_collector7Connector.AnimationViewModel.Animation = LineAnimation.PathAnimation;
|
||||
DiagramViewModel.Add(switch_collector7Connector);
|
||||
|
||||
readDataTimer.Elapsed += timeCycle;
|
||||
readDataTimer.Interval = 1000;
|
||||
readDataTimer.AutoReset = false;
|
||||
readDataTimer.Start();
|
||||
}
|
||||
|
||||
private void timeCycle(object sender, ElapsedEventArgs e)
|
||||
{
|
||||
foreach (var item in DiagramViewModel.Items.OfType<LogicalGateItemViewModelBase>().OrderBy(p => p.OrderNumber).ToList())
|
||||
{
|
||||
item.Execute();
|
||||
}
|
||||
readDataTimer.Start();
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
base.Dispose();
|
||||
|
||||
readDataTimer.Stop();
|
||||
readDataTimer.Dispose();
|
||||
|
||||
foreach (var item in DiagramViewModel.Items.OfType<LogicalGateItemViewModelBase>().OrderBy(p => p.OrderNumber).ToList())
|
||||
{
|
||||
item.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user