2025-03-18 21:01:15 +08:00
|
|
|
|
using CommunityToolkit.Mvvm.ComponentModel;
|
2025-03-24 15:44:34 +08:00
|
|
|
|
using CommunityToolkit.Mvvm.Input;
|
|
|
|
|
|
using Serein.Library.Api;
|
2025-05-27 18:32:40 +08:00
|
|
|
|
using Serein.Workbench.Services;
|
2025-03-24 15:44:34 +08:00
|
|
|
|
using System.Windows.Input;
|
2025-03-18 21:01:15 +08:00
|
|
|
|
|
|
|
|
|
|
namespace Serein.Workbench.ViewModels
|
|
|
|
|
|
{
|
|
|
|
|
|
public class MainMenuBarViewModel : ObservableObject
|
|
|
|
|
|
{
|
2025-03-24 15:44:34 +08:00
|
|
|
|
private readonly IFlowEnvironment environment;
|
2025-05-27 18:32:40 +08:00
|
|
|
|
private readonly FlowNodeService flowNodeService;
|
2025-03-24 15:44:34 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 保存项目
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public ICommand SaveProjectCommand { get; private set; }
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 加载本地文件
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public ICommand LoadLocalProjectCommand { get; private set; }
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 加载远程项目
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public ICommand LoadRemoteProjectCommand { get; private set; }
|
2025-05-26 23:55:23 +08:00
|
|
|
|
|
2025-03-24 15:44:34 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 增加流程图
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public ICommand CreateFlowCanvasCommand { get; private set; }
|
|
|
|
|
|
/// <summary>
|
2025-05-26 23:55:23 +08:00
|
|
|
|
/// 移除流程图
|
2025-03-24 15:44:34 +08:00
|
|
|
|
/// </summary>
|
|
|
|
|
|
public ICommand RemoteFlowCanvasCommand { get; private set; }
|
|
|
|
|
|
|
2025-05-27 18:32:40 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 运行当前画布流程
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public ICommand StartFlowCommand { get; private set; }
|
2025-05-26 23:55:23 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 运行当前画布流程
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public ICommand StartCurrentCanvasFlowCommand { get; private set; }
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 停止当前画布流程
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public ICommand StopCurrentCanvasFlowCommand { get; private set; }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-03-24 15:44:34 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 打开环境输出窗口
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public ICommand OpenEnvOutWindowCommand { get; private set; }
|
2025-05-26 23:55:23 +08:00
|
|
|
|
|
2025-03-24 15:44:34 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 打开动态编译窗口
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public ICommand OpenDynamicCompilerCommand { get; private set; }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-05-27 18:32:40 +08:00
|
|
|
|
public MainMenuBarViewModel(IFlowEnvironment environment, FlowNodeService flowNodeService)
|
2025-03-18 21:01:15 +08:00
|
|
|
|
{
|
2025-03-24 15:44:34 +08:00
|
|
|
|
this.environment = environment;
|
2025-05-27 18:32:40 +08:00
|
|
|
|
this.flowNodeService = flowNodeService;
|
2025-05-26 23:55:23 +08:00
|
|
|
|
SaveProjectCommand = new RelayCommand(SaveProject); // 保存项目
|
|
|
|
|
|
LoadLocalProjectCommand = new RelayCommand(LoadLocalProject); // 加载本地项目
|
|
|
|
|
|
LoadRemoteProjectCommand = new RelayCommand(LoadRemoteProject); // 加载远程项目
|
2025-03-24 15:44:34 +08:00
|
|
|
|
|
2025-05-26 23:55:23 +08:00
|
|
|
|
CreateFlowCanvasCommand = new RelayCommand(CreateFlowCanvas); // 增加画布
|
|
|
|
|
|
RemoteFlowCanvasCommand = new RelayCommand(RemoteFlowCanvas); // 移除画布
|
2025-03-24 15:44:34 +08:00
|
|
|
|
|
2025-05-27 18:32:40 +08:00
|
|
|
|
StartFlowCommand = new RelayCommand(StartFlow);
|
|
|
|
|
|
StartCurrentCanvasFlowCommand = new RelayCommand(StartCurrentCanvasFlow); // 运行当前所查看画布的流程
|
2025-05-26 23:55:23 +08:00
|
|
|
|
StopCurrentCanvasFlowCommand = new RelayCommand(StopCurrentCanvasFlow); // 停止当前流程
|
|
|
|
|
|
|
|
|
|
|
|
OpenEnvOutWindowCommand = new RelayCommand(OpenEnvOutWindow); // 打开运行输出窗口
|
|
|
|
|
|
OpenDynamicCompilerCommand = new RelayCommand(OpenDynamicCompiler); // 打开动态编译仓库窗口
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-05-27 18:32:40 +08:00
|
|
|
|
private void SaveProject() => environment.SaveProject(); // 保存项目
|
2025-05-26 23:55:23 +08:00
|
|
|
|
private void LoadLocalProject() {
|
|
|
|
|
|
//environment.LoadProject(); // 加载项目
|
2025-03-18 21:01:15 +08:00
|
|
|
|
}
|
2025-05-27 18:32:40 +08:00
|
|
|
|
private void LoadRemoteProject()
|
|
|
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
private void CreateFlowCanvas() => flowNodeService.CreateFlowCanvas();
|
|
|
|
|
|
|
|
|
|
|
|
private void RemoteFlowCanvas() => flowNodeService.RemoveFlowCanvas();
|
|
|
|
|
|
|
|
|
|
|
|
private void StartFlow() => environment.StartFlowAsync([.. flowNodeService.FlowCanvass.Select(c => c.Guid)]);
|
|
|
|
|
|
private void StartCurrentCanvasFlow() => environment.StartFlowAsync([flowNodeService.CurrentSelectCanvas.Guid]);
|
2025-05-26 23:55:23 +08:00
|
|
|
|
private void StopCurrentCanvasFlow() { }
|
|
|
|
|
|
private void OpenDynamicCompiler() { }
|
2025-05-27 18:32:40 +08:00
|
|
|
|
private void OpenEnvOutWindow() => LogWindow.Instance?.Show();
|
2025-03-24 15:44:34 +08:00
|
|
|
|
|
2025-03-18 21:01:15 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|