import { v4 as uuidV4 } from 'uuid'; import XSystem from '../../XSystem.ts' import WindowFormImpl from '../../window/impl/WindowFormImpl.ts' import type { IProcess } from '@/core/process/IProcess.ts' import type { IProcessInfo } from '@/core/process/IProcessInfo.ts' import type { IWindowForm } from '@/core/window/IWindowForm.ts' /** * 进程 */ export default class ProcessImpl implements IProcess { private readonly _id: string = uuidV4(); private readonly _processInfo: IProcessInfo; // 当前进程的窗体集合 private _windowForms: Map = new Map(); public get id() { return this._id; } public get processInfo() { return this._processInfo; } public get windowForms() { return this._windowForms; } constructor(info: IProcessInfo) { console.log(`AppProcess: ${info.name}`) this._processInfo = info; const startName = info.startName; XSystem.instance.processManage.addProcess(this); // 通过设置 isJustProcess 为 true,则不会创建窗体 if (!info.isJustProcess) { this.openWindowForm(startName) } } public openWindowForm(startName: string) { const info = this._processInfo.windowFormConfigs.find(item => item.name === startName); if (!info) throw new Error(`未找到窗体:${startName}`); const window = new WindowFormImpl(this, info); this._windowForms.set(window.id, window); } }