优化了Workbench上的操作。

This commit is contained in:
fengjiayi
2025-05-30 23:31:31 +08:00
parent f0eb11c914
commit a19733eff5
35 changed files with 807 additions and 225 deletions

View File

@@ -22,11 +22,13 @@ namespace Serein.Workbench.ViewModels
public BaseNodesViewModel BaseNodesViewModel => App.GetService<BaseNodesViewModel>() ?? throw new NotImplementedException();
public FlowLibrarysViewModel FlowLibrarysViewModel => App.GetService<FlowLibrarysViewModel>() ?? throw new NotImplementedException();
public FlowEditViewModel FlowEditViewModel => App.GetService<FlowEditViewModel>() ?? throw new NotImplementedException();
public ViewNodeInfoViewModel NodeInfoViewModel => App.GetService<ViewNodeInfoViewModel>() ?? throw new NotImplementedException();
public ViewNodeMethodInfoViewModel ViewNodeMethodInfoViewModel => App.GetService<ViewNodeMethodInfoViewModel>() ?? throw new NotImplementedException();
public FlowCanvasViewModel FlowCanvasViewModel => App.GetService<FlowCanvasViewModel>() ?? throw new NotImplementedException();
public CanvasInfoViewModel CanvasNodeTreeViewModel => App.GetService<CanvasInfoViewModel>() ?? throw new NotImplementedException();
public ViewCanvasInfoViewModel CanvasNodeTreeViewModel => App.GetService<ViewCanvasInfoViewModel>() ?? throw new NotImplementedException();
public IServiceProvider ServiceProvider { get; }
}

View File

@@ -10,6 +10,7 @@ namespace Serein.Workbench.ViewModels
{
private readonly IFlowEnvironment environment;
private readonly FlowNodeService flowNodeService;
private readonly FlowProjectService flowProjectService;
/// <summary>
/// 保存项目
@@ -61,10 +62,13 @@ namespace Serein.Workbench.ViewModels
public MainMenuBarViewModel(IFlowEnvironment environment, FlowNodeService flowNodeService)
public MainMenuBarViewModel(IFlowEnvironment environment,
FlowNodeService flowNodeService,
FlowProjectService flowProjectService)
{
this.environment = environment;
this.flowNodeService = flowNodeService;
this.flowProjectService = flowProjectService;
SaveProjectCommand = new RelayCommand(SaveProject); // 保存项目
LoadLocalProjectCommand = new RelayCommand(LoadLocalProject); // 加载本地项目
LoadRemoteProjectCommand = new RelayCommand(LoadRemoteProject); // 加载远程项目
@@ -78,12 +82,16 @@ namespace Serein.Workbench.ViewModels
OpenEnvOutWindowCommand = new RelayCommand(OpenEnvOutWindow); // 打开运行输出窗口
OpenDynamicCompilerCommand = new RelayCommand(OpenDynamicCompiler); // 打开动态编译仓库窗口
this.flowProjectService = flowProjectService;
}
private void SaveProject() => environment.SaveProject(); // 保存项目
private void LoadLocalProject() {
//environment.LoadProject(); // 加载项目
flowProjectService.SelectProjectFile(); //选择项目
}
private void LoadRemoteProject()
{
}
@@ -91,7 +99,7 @@ namespace Serein.Workbench.ViewModels
private void RemoteFlowCanvas() => flowNodeService.RemoveFlowCanvas();
private void StartFlow() => environment.StartFlowAsync([.. flowNodeService.FlowCanvass.Select(c => c.Guid)]);
private void StartUIFlow() => environment.StartFlowAsync([.. flowNodeService.FlowCanvass.Select(c => c.Guid)]);
private void StartCurrentCanvasFlow() => environment.StartFlowAsync([flowNodeService.CurrentSelectCanvas.Guid]);
private void StopCurrentCanvasFlow() { }
private void OpenDynamicCompiler() { }

View File

@@ -10,7 +10,7 @@ using System.Threading.Tasks;
namespace Serein.Workbench.ViewModels
{
internal partial class CanvasInfoViewModel : ObservableObject
internal partial class ViewCanvasInfoViewModel : ObservableObject
{
private readonly FlowNodeService flowNodeService;
@@ -20,7 +20,7 @@ namespace Serein.Workbench.ViewModels
[ObservableProperty]
private FlowCanvasDetails _model;
public CanvasInfoViewModel(FlowNodeService flowNodeService)
public ViewCanvasInfoViewModel(FlowNodeService flowNodeService)
{
this.flowNodeService = flowNodeService;
this.flowNodeService.OnViewCanvasChanged += OnViewCanvasChanged;
@@ -34,5 +34,8 @@ namespace Serein.Workbench.ViewModels
{
Model = flowCanvas.ViewModel.Model;
}
}
}

View File

@@ -0,0 +1,46 @@
using CommunityToolkit.Mvvm.ComponentModel;
using Serein.Library;
using Serein.Workbench.Node.View;
using Serein.Workbench.Services;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Serein.Workbench.ViewModels
{
internal partial class ViewNodeInfoViewModel : ObservableObject
{
private readonly FlowNodeService flowNodeService;
/// <summary>
/// 当前预览的节点
/// </summary>
[ObservableProperty]
private NodeModelBase viewNodeModel;
public ViewNodeInfoViewModel(FlowNodeService flowNodeService)
{
this.flowNodeService = flowNodeService;
InitEvent();
}
private void InitEvent()
{
flowNodeService.OnViewNodeControlChanged += OnViewNodeControlChanged;
}
private void OnViewNodeControlChanged(NodeControlBase viewNodeControl)
{
if(viewNodeControl is null)
{
ViewNodeModel = null;
}
else
{
ViewNodeModel = viewNodeControl.ViewModel.NodeModel;
}
}
}
}

View File

@@ -0,0 +1,40 @@
using CommunityToolkit.Mvvm.ComponentModel;
using Serein.Library;
using Serein.Workbench.Services;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Reflection.Metadata;
using System.Text;
using System.Threading.Tasks;
namespace Serein.Workbench.ViewModels
{
internal partial class ViewNodeMethodInfoViewModel : ObservableObject
{
private readonly FlowNodeService flowNodeService;
/// <summary>
/// 当前预览的节点
/// </summary>
[ObservableProperty]
private MethodDetailsInfo mdInfo;
public ViewNodeMethodInfoViewModel(FlowNodeService flowNodeService)
{
this.flowNodeService = flowNodeService;
InitEvent();
}
private void InitEvent()
{
flowNodeService.OnViewMethodDetailsInfoChanged += OnViewMethodDetailsInfoChanged;
}
private void OnViewMethodDetailsInfoChanged(MethodDetailsInfo methodDetailsInfo)
{
MdInfo = methodDetailsInfo;
}
}
}