保存一下
This commit is contained in:
@@ -1,18 +1,20 @@
|
|||||||
import ProcessManages from './process/ProcessManages.ts'
|
import ProcessManageImpl from './process/impl/ProcessManageImpl.ts'
|
||||||
import AppProcess from './process/AppProcess.ts'
|
import ProcessImpl from './process/impl/ProcessImpl.ts'
|
||||||
import type { AppProcessInfo } from '@/core/process/AppProcessInfo.ts'
|
import type { ProcessInfoImpl } from '@/core/process/impl/ProcessInfoImpl.ts'
|
||||||
import { isUndefined } from 'lodash'
|
import { isUndefined } from 'lodash'
|
||||||
import { BasicSystemProcess } from '@/core/system/BasicSystemProcess.ts'
|
import { BasicSystemProcess } from '@/core/system/BasicSystemProcess.ts'
|
||||||
import { DesktopProcess } from '@/core/desktop/DesktopProcess.ts'
|
import { DesktopProcess } from '@/core/desktop/DesktopProcess.ts'
|
||||||
import type { IAllEvent } from '@/core/events/EventTypes.ts'
|
import type { IAllEvent } from '@/core/events/EventTypes.ts'
|
||||||
import type { IEventBuilder } from '@/core/events/IEventBuilder.ts'
|
import type { IEventBuilder } from '@/core/events/IEventBuilder.ts'
|
||||||
import { EventBuilderImpl } from '@/core/events/impl/EventBuilderImpl.ts'
|
import { EventBuilderImpl } from '@/core/events/impl/EventBuilderImpl.ts'
|
||||||
|
import type { IProcessManage } from '@/core/process/IProcessManage.ts'
|
||||||
|
import type { IProcess } from '@/core/process/IProcess.ts'
|
||||||
|
|
||||||
export default class XSystem {
|
export default class XSystem {
|
||||||
private static _instance: XSystem = new XSystem()
|
private static _instance: XSystem = new XSystem()
|
||||||
|
|
||||||
private _processManages: ProcessManages = new ProcessManages()
|
private _processManage: IProcessManage = new ProcessManageImpl()
|
||||||
private _eventManages: IEventBuilder<IAllEvent> = new EventBuilderImpl()
|
private _eventManage: IEventBuilder<IAllEvent> = new EventBuilderImpl()
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
console.log('XSystem')
|
console.log('XSystem')
|
||||||
@@ -21,11 +23,11 @@ export default class XSystem {
|
|||||||
public static get instance() {
|
public static get instance() {
|
||||||
return this._instance
|
return this._instance
|
||||||
}
|
}
|
||||||
public get processManages() {
|
public get processManage() {
|
||||||
return this._processManages
|
return this._processManage
|
||||||
}
|
}
|
||||||
public get eventManages() {
|
public get eventManage() {
|
||||||
return this._eventManages
|
return this._eventManage
|
||||||
}
|
}
|
||||||
|
|
||||||
public initialization(dom: HTMLDivElement) {
|
public initialization(dom: HTMLDivElement) {
|
||||||
@@ -37,25 +39,25 @@ export default class XSystem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 运行进程
|
// 运行进程
|
||||||
public async run<T extends AppProcess = AppProcess>(
|
public async run<T extends IProcess = IProcess>(
|
||||||
proc: string | AppProcessInfo,
|
proc: string | ProcessInfoImpl,
|
||||||
constructor?: new (info: AppProcessInfo) => T,
|
constructor?: new (info: ProcessInfoImpl) => T,
|
||||||
): Promise<T> {
|
): Promise<T> {
|
||||||
let info = typeof proc === 'string' ? this._processManages.findProcessInfoByName(proc) : proc
|
let info = typeof proc === 'string' ? this._processManage.findProcessInfoByName(proc) : proc
|
||||||
if (isUndefined(info)) {
|
if (isUndefined(info)) {
|
||||||
throw new Error(`未找到进程信息:${proc}`)
|
throw new Error(`未找到进程信息:${proc}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 是单例应用
|
// 是单例应用
|
||||||
if (info.singleton) {
|
if (info.singleton) {
|
||||||
let process = this._processManages.findProcessByName(info.name)
|
let process = this._processManage.findProcessByName(info.name)
|
||||||
if (process) {
|
if (process) {
|
||||||
return process as T
|
return process as T
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 创建进程
|
// 创建进程
|
||||||
let process = isUndefined(constructor) ? new AppProcess(info) : new constructor(info)
|
let process = isUndefined(constructor) ? new ProcessImpl(info) : new constructor(info)
|
||||||
|
|
||||||
return process as T
|
return process as T
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* 版本信息
|
* 版本信息
|
||||||
*/
|
*/
|
||||||
export interface Version {
|
export interface IVersion {
|
||||||
/**
|
/**
|
||||||
* 公司名称
|
* 公司名称
|
||||||
*/
|
*/
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
import AppProcess from '@/core/process/AppProcess.ts'
|
import ProcessImpl from '@/core/process/impl/ProcessImpl.ts'
|
||||||
import type { AppProcessInfo } from '@/core/process/AppProcessInfo.ts'
|
import type { ProcessInfoImpl } from '@/core/process/impl/ProcessInfoImpl.ts'
|
||||||
import XSystem from '@/core/XSystem.ts'
|
import XSystem from '@/core/XSystem.ts'
|
||||||
import { BasicSystemProcess } from '@/core/system/BasicSystemProcess.ts'
|
import { BasicSystemProcess } from '@/core/system/BasicSystemProcess.ts'
|
||||||
import { createApp, h } from 'vue'
|
import { createApp, h } from 'vue'
|
||||||
@@ -8,7 +8,7 @@ import { naiveUi } from '@/core/common/naive-ui/components.ts'
|
|||||||
import { DesktopEventEnum } from '@/core/events/EventTypes.ts'
|
import { DesktopEventEnum } from '@/core/events/EventTypes.ts'
|
||||||
import { debounce } from 'lodash'
|
import { debounce } from 'lodash'
|
||||||
|
|
||||||
export class DesktopProcess extends AppProcess {
|
export class DesktopProcess extends ProcessImpl {
|
||||||
private _desktopRootDom: HTMLElement;
|
private _desktopRootDom: HTMLElement;
|
||||||
private _isMounted: boolean = false;
|
private _isMounted: boolean = false;
|
||||||
private _width: number = 0;
|
private _width: number = 0;
|
||||||
@@ -22,7 +22,7 @@ export class DesktopProcess extends AppProcess {
|
|||||||
return this._isMounted;
|
return this._isMounted;
|
||||||
}
|
}
|
||||||
public get basicSystemProcess() {
|
public get basicSystemProcess() {
|
||||||
return XSystem.instance.processManages.findProcessByName<BasicSystemProcess>('basic-system')
|
return XSystem.instance.processManage.findProcessByName<BasicSystemProcess>('basic-system')
|
||||||
}
|
}
|
||||||
|
|
||||||
public get width() {
|
public get width() {
|
||||||
@@ -63,10 +63,10 @@ export class DesktopProcess extends AppProcess {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private get eventManages() {
|
private get eventManages() {
|
||||||
return XSystem.instance.eventManages;
|
return XSystem.instance.eventManage;
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor(info: AppProcessInfo) {
|
constructor(info: ProcessInfoImpl) {
|
||||||
super(info)
|
super(info)
|
||||||
console.log('DesktopProcess')
|
console.log('DesktopProcess')
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { AppProcessInfo } from '@/core/process/AppProcessInfo.ts'
|
import { ProcessInfoImpl } from '@/core/process/impl/ProcessInfoImpl.ts'
|
||||||
|
|
||||||
export const DesktopProcessInfo = new AppProcessInfo({
|
export const DesktopProcessInfo = new ProcessInfoImpl({
|
||||||
name: 'desktop',
|
name: 'desktop',
|
||||||
title: '桌面',
|
title: '桌面',
|
||||||
version: {
|
version: {
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ const props = defineProps<{ process: DesktopProcess }>()
|
|||||||
|
|
||||||
const { appIconsRef, gridStyle, gridTemplate } = useDesktopInit('.desktop-container')
|
const { appIconsRef, gridStyle, gridTemplate } = useDesktopInit('.desktop-container')
|
||||||
|
|
||||||
XSystem.instance.eventManages.addEventListener(
|
XSystem.instance.eventManage.addEventListener(
|
||||||
DesktopEventEnum.onDesktopRootDomResize,
|
DesktopEventEnum.onDesktopRootDomResize,
|
||||||
(width, height) => {
|
(width, height) => {
|
||||||
console.log(width, height)
|
console.log(width, height)
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ const onDragEnd = (e: DragEvent) => {
|
|||||||
iconInfo.x = gridX
|
iconInfo.x = gridX
|
||||||
iconInfo.y = gridY
|
iconInfo.y = gridY
|
||||||
|
|
||||||
XSystem.instance.eventManages.notifyEvent(DesktopEventEnum.onDesktopAppIconPos, iconInfo)
|
XSystem.instance.eventManage.notifyEvent(DesktopEventEnum.onDesktopAppIconPos, iconInfo)
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ export function useDesktopInit(containerStr: string) {
|
|||||||
})
|
})
|
||||||
|
|
||||||
// 有桌面图标的app
|
// 有桌面图标的app
|
||||||
const appInfos = XSystem.instance.processManages.processInfos.filter(processInfo => !processInfo.isJustProcess)
|
const appInfos = XSystem.instance.processManage.processInfos.filter(processInfo => !processInfo.isJustProcess)
|
||||||
const oldAppIcons: IDesktopAppIcon[] = JSON.parse(localStorage.getItem('desktopAppIconInfo') || '[]')
|
const oldAppIcons: IDesktopAppIcon[] = JSON.parse(localStorage.getItem('desktopAppIconInfo') || '[]')
|
||||||
const appIcons: IDesktopAppIcon[] = appInfos.map((processInfo, index) => {
|
const appIcons: IDesktopAppIcon[] = appInfos.map((processInfo, index) => {
|
||||||
const oldAppIcon = oldAppIcons.find(oldAppIcon => oldAppIcon.name === processInfo.name)
|
const oldAppIcon = oldAppIcons.find(oldAppIcon => oldAppIcon.name === processInfo.name)
|
||||||
@@ -85,7 +85,7 @@ export function useDesktopInit(containerStr: string) {
|
|||||||
appIconsRef.value = rearrangeIcons(toRaw(appIconsRef.value), nCols, nRows, oCols, oRows)
|
appIconsRef.value = rearrangeIcons(toRaw(appIconsRef.value), nCols, nRows, oCols, oRows)
|
||||||
})
|
})
|
||||||
|
|
||||||
XSystem.instance.eventManages.addEventListener(DesktopEventEnum.onDesktopAppIconPos, (iconInfo) => {
|
XSystem.instance.eventManage.addEventListener(DesktopEventEnum.onDesktopAppIconPos, (iconInfo) => {
|
||||||
localStorage.setItem('desktopAppIconInfo', JSON.stringify(toValue(appIconsRef.value)))
|
localStorage.setItem('desktopAppIconInfo', JSON.stringify(toValue(appIconsRef.value)))
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
20
src/core/process/IProcess.ts
Normal file
20
src/core/process/IProcess.ts
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
import type { ProcessInfoImpl } from '@/core/process/impl/ProcessInfoImpl.ts'
|
||||||
|
import type WindowForm from '@/core/window/WindowForm.ts'
|
||||||
|
import type { IProcessInfo } from '@/core/process/IProcessInfo.ts'
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 进程接口
|
||||||
|
*/
|
||||||
|
export interface IProcess {
|
||||||
|
/** 进程id */
|
||||||
|
get id(): string;
|
||||||
|
/** 进程信息 */
|
||||||
|
get processInfo(): IProcessInfo;
|
||||||
|
/** 进程的窗体列表 */
|
||||||
|
get windowForms(): Map<string, WindowForm>;
|
||||||
|
/**
|
||||||
|
* 打开窗体
|
||||||
|
* @param startName 窗体启动名
|
||||||
|
*/
|
||||||
|
openWindowForm(startName: string): void;
|
||||||
|
}
|
||||||
26
src/core/process/IProcessInfo.ts
Normal file
26
src/core/process/IProcessInfo.ts
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
import type { IVersion } from '@/core/common/types/IVersion.ts'
|
||||||
|
import type { IWindowFormConfig } from '@/core/window/types/IWindowFormConfig.ts'
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 进程的描述信息
|
||||||
|
*/
|
||||||
|
export interface IProcessInfo {
|
||||||
|
/** 进程名称 - 唯一 */
|
||||||
|
get name(): string;
|
||||||
|
/** 进程标题 */
|
||||||
|
get title(): string;
|
||||||
|
/** 进程描述 */
|
||||||
|
get description(): string;
|
||||||
|
/** 进程图标 */
|
||||||
|
get icon(): string;
|
||||||
|
/** 启动窗体名称 */
|
||||||
|
get startName(): string;
|
||||||
|
/** 进程版本 */
|
||||||
|
get version(): IVersion;
|
||||||
|
/** 是否单例进程 */
|
||||||
|
get singleton(): boolean;
|
||||||
|
/** 是否仅进程 */
|
||||||
|
get isJustProcess(): boolean;
|
||||||
|
/** 进程的窗体配置 */
|
||||||
|
get windowFormConfigs(): IWindowFormConfig[];
|
||||||
|
}
|
||||||
41
src/core/process/IProcessManage.ts
Normal file
41
src/core/process/IProcessManage.ts
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
import type { ProcessInfoImpl } from '@/core/process/impl/ProcessInfoImpl.ts'
|
||||||
|
import type { IProcess } from '@/core/process/IProcess.ts'
|
||||||
|
import type { IProcessInfo } from '@/core/process/IProcessInfo.ts'
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 进程管理
|
||||||
|
*/
|
||||||
|
export interface IProcessManage {
|
||||||
|
/** 所有进程信息 */
|
||||||
|
get processInfos(): IProcessInfo[];
|
||||||
|
/**
|
||||||
|
* 添加进程
|
||||||
|
* @param process 进程
|
||||||
|
*/
|
||||||
|
addProcess(process: IProcess): void;
|
||||||
|
/**
|
||||||
|
* 通过进程id查找进程
|
||||||
|
* @param id 进程id
|
||||||
|
*/
|
||||||
|
findProcessById(id: string): IProcess | undefined;
|
||||||
|
/**
|
||||||
|
* 通过进程名查找进程
|
||||||
|
* @param name 进程名
|
||||||
|
*/
|
||||||
|
findProcessByName<T extends IProcess = IProcess>(name: string): T | undefined;
|
||||||
|
/**
|
||||||
|
* 通过进程id删除进程
|
||||||
|
* @param id 进程id
|
||||||
|
*/
|
||||||
|
removeProcess(id: string): void;
|
||||||
|
/**
|
||||||
|
* 通过进程对象删除进程
|
||||||
|
* @param process 进程对象
|
||||||
|
*/
|
||||||
|
removeProcess(process: IProcess): void;
|
||||||
|
/**
|
||||||
|
* 通过进程名查找进程信息
|
||||||
|
* @param name 进程名
|
||||||
|
*/
|
||||||
|
findProcessInfoByName(name: string): IProcessInfo | undefined;
|
||||||
|
}
|
||||||
@@ -1,14 +1,15 @@
|
|||||||
import { v4 as uuidV4 } from 'uuid';
|
import { v4 as uuidV4 } from 'uuid';
|
||||||
import XSystem from '../XSystem.ts'
|
import XSystem from '../../XSystem.ts'
|
||||||
import type { AppProcessInfo } from '../process/AppProcessInfo.ts'
|
import WindowForm from '../../window/WindowForm.ts'
|
||||||
import WindowForm from '../window/WindowForm.ts'
|
import type { IProcess } from '@/core/process/IProcess.ts'
|
||||||
|
import type { IProcessInfo } from '@/core/process/IProcessInfo.ts'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 进程
|
* 进程
|
||||||
*/
|
*/
|
||||||
export default class AppProcess {
|
export default class ProcessImpl implements IProcess {
|
||||||
private readonly _id: string = uuidV4();
|
private readonly _id: string = uuidV4();
|
||||||
private readonly _processInfo: AppProcessInfo;
|
private readonly _processInfo: IProcessInfo;
|
||||||
// 当前进程的窗体集合
|
// 当前进程的窗体集合
|
||||||
private _windowForms: Map<string, WindowForm> = new Map();
|
private _windowForms: Map<string, WindowForm> = new Map();
|
||||||
|
|
||||||
@@ -22,13 +23,13 @@ export default class AppProcess {
|
|||||||
return this._windowForms;
|
return this._windowForms;
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor(info: AppProcessInfo) {
|
constructor(info: IProcessInfo) {
|
||||||
console.log(`AppProcess: ${info.name}`)
|
console.log(`AppProcess: ${info.name}`)
|
||||||
this._processInfo = info;
|
this._processInfo = info;
|
||||||
|
|
||||||
const startName = info.startName;
|
const startName = info.startName;
|
||||||
|
|
||||||
XSystem.instance.processManages.addProcess(this);
|
XSystem.instance.processManage.addProcess(this);
|
||||||
// 通过设置 isJustProcess 为 true,则不会创建窗体
|
// 通过设置 isJustProcess 为 true,则不会创建窗体
|
||||||
if (!info.isJustProcess) {
|
if (!info.isJustProcess) {
|
||||||
this.openWindowForm(startName)
|
this.openWindowForm(startName)
|
||||||
@@ -1,8 +1,9 @@
|
|||||||
import type { Version } from '../common/types/Version.ts'
|
import type { IVersion } from '../../common/types/IVersion.ts'
|
||||||
import type { IAppProcessInfoParams } from './types/IAppProcessInfoParams.ts'
|
import type { IAppProcessInfoParams } from '../types/IAppProcessInfoParams.ts'
|
||||||
import type { WindowFormConfig } from '../window/types/WindowFormConfig.ts'
|
import type { IWindowFormConfig } from '../../window/types/IWindowFormConfig.ts'
|
||||||
|
import type { IProcessInfo } from '@/core/process/IProcessInfo.ts'
|
||||||
|
|
||||||
export class AppProcessInfo {
|
export class ProcessInfoImpl implements IProcessInfo {
|
||||||
/**
|
/**
|
||||||
* 应用进程名称
|
* 应用进程名称
|
||||||
* @private
|
* @private
|
||||||
@@ -38,7 +39,7 @@ export class AppProcessInfo {
|
|||||||
* 应用版本信息
|
* 应用版本信息
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
private readonly _version: Version;
|
private readonly _version: IVersion;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 应用是否只存在一个进程
|
* 应用是否只存在一个进程
|
||||||
@@ -56,7 +57,7 @@ export class AppProcessInfo {
|
|||||||
* 进程所有的窗口配置信息
|
* 进程所有的窗口配置信息
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
private readonly _windowFormConfigs: Array<WindowFormConfig>;
|
private readonly _windowFormConfigs: Array<IWindowFormConfig>;
|
||||||
|
|
||||||
constructor(info: IAppProcessInfoParams) {
|
constructor(info: IAppProcessInfoParams) {
|
||||||
this._name = info.name;
|
this._name = info.name;
|
||||||
@@ -1,30 +1,33 @@
|
|||||||
import type AppProcess from './AppProcess.ts'
|
import type ProcessImpl from './ProcessImpl.ts'
|
||||||
import { AppProcessInfo } from '@/core/process/AppProcessInfo.ts'
|
import { ProcessInfoImpl } from '@/core/process/impl/ProcessInfoImpl.ts'
|
||||||
import { BasicSystemProcessInfo } from '@/core/system/BasicSystemProcessInfo.ts'
|
import { BasicSystemProcessInfo } from '@/core/system/BasicSystemProcessInfo.ts'
|
||||||
import { DesktopProcessInfo } from '@/core/desktop/DesktopProcessInfo.ts'
|
import { DesktopProcessInfo } from '@/core/desktop/DesktopProcessInfo.ts'
|
||||||
import type { IAppProcessInfoParams } from '@/core/process/types/IAppProcessInfoParams.ts'
|
import type { IAppProcessInfoParams } from '@/core/process/types/IAppProcessInfoParams.ts'
|
||||||
|
import type { IProcessManage } from '@/core/process/IProcessManage.ts'
|
||||||
|
import type { IProcess } from '@/core/process/IProcess.ts'
|
||||||
|
import type { IProcessInfo } from '@/core/process/IProcessInfo.ts'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 进程管理
|
* 进程管理
|
||||||
*/
|
*/
|
||||||
export default class ProcessManages {
|
export default class ProcessManageImpl implements IProcessManage {
|
||||||
private _processPool: Map<string, AppProcess> = new Map<string, AppProcess>();
|
private _processPool: Map<string, IProcess> = new Map<string, IProcess>();
|
||||||
private _processInfos: AppProcessInfo[] = [];
|
private _processInfos: IProcessInfo[] = new Array<ProcessInfoImpl>();
|
||||||
|
|
||||||
public get processInfos() {
|
public get processInfos() {
|
||||||
return this._processInfos;
|
return this._processInfos;
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
console.log('ProcessManages')
|
console.log('ProcessManageImpl')
|
||||||
this.loadAppProcessInfos();
|
this.loadAppProcessInfos();
|
||||||
}
|
}
|
||||||
// TODO 加载所有进程信息
|
// TODO 加载所有进程信息
|
||||||
public loadAppProcessInfos() {
|
private loadAppProcessInfos() {
|
||||||
console.log('加载所有进程信息')
|
console.log('加载所有进程信息')
|
||||||
// 添加内置进程
|
// 添加内置进程
|
||||||
const apps = import.meta.glob<IAppProcessInfoParams>('../apps/**/*.json', { eager: true })
|
const apps = import.meta.glob<IAppProcessInfoParams>('../../apps/**/*.json', { eager: true })
|
||||||
const internalProcessInfos: AppProcessInfo[] = Object.values(apps).map(data => new AppProcessInfo(data))
|
const internalProcessInfos: ProcessInfoImpl[] = Object.values(apps).map(data => new ProcessInfoImpl(data))
|
||||||
|
|
||||||
this._processInfos.push(BasicSystemProcessInfo)
|
this._processInfos.push(BasicSystemProcessInfo)
|
||||||
this._processInfos.push(DesktopProcessInfo)
|
this._processInfos.push(DesktopProcessInfo)
|
||||||
@@ -33,7 +36,7 @@ export default class ProcessManages {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 添加进程
|
// 添加进程
|
||||||
public addProcess(process: AppProcess) {
|
public addProcess(process: ProcessImpl) {
|
||||||
this._processPool.set(process.id, process);
|
this._processPool.set(process.id, process);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -49,9 +52,9 @@ export default class ProcessManages {
|
|||||||
* 通过进程名称查找进程
|
* 通过进程名称查找进程
|
||||||
* @param name 进程名称
|
* @param name 进程名称
|
||||||
*/
|
*/
|
||||||
public findProcessByName<T extends AppProcess = AppProcess>(name: string) {
|
public findProcessByName<T extends IProcess = IProcess>(name: string) {
|
||||||
const pools = [...this._processPool.values()];
|
const pools = [...this._processPool.values()];
|
||||||
return pools.find(proc => proc.processInfo.name === name) as T;
|
return pools.find(proc => proc.processInfo.name === name) as T | undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -63,8 +66,8 @@ export default class ProcessManages {
|
|||||||
* 根据进程删除进程
|
* 根据进程删除进程
|
||||||
* @param process 进程信息
|
* @param process 进程信息
|
||||||
*/
|
*/
|
||||||
public removeProcess(process: AppProcess): void;
|
public removeProcess(process: IProcess): void;
|
||||||
public removeProcess(params: string | AppProcess) {
|
public removeProcess(params: string | IProcess) {
|
||||||
const id = typeof params === 'string' ? params : params.id;
|
const id = typeof params === 'string' ? params : params.id;
|
||||||
this._processPool.delete(id);
|
this._processPool.delete(id);
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
import type { Version } from '../../common/types/Version.ts'
|
import type { IVersion } from '../../common/types/IVersion.ts'
|
||||||
import type { WindowFormConfig } from '../../window/types/WindowFormConfig.ts'
|
import type { IWindowFormConfig } from '../../window/types/IWindowFormConfig.ts'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 应用进程入参信息
|
* 应用进程入参信息
|
||||||
@@ -16,11 +16,11 @@ export interface IAppProcessInfoParams {
|
|||||||
/** 应用进程启动入口 */
|
/** 应用进程启动入口 */
|
||||||
startName?: string;
|
startName?: string;
|
||||||
/** 应用版本信息 */
|
/** 应用版本信息 */
|
||||||
version?: Version;
|
version?: IVersion;
|
||||||
/** 应用是否只存在一个进程 */
|
/** 应用是否只存在一个进程 */
|
||||||
singleton: boolean;
|
singleton: boolean;
|
||||||
/** 是否只是一个进程, 没有UI */
|
/** 是否只是一个进程, 没有UI */
|
||||||
isJustProcess: boolean;
|
isJustProcess: boolean;
|
||||||
/** 进程所有的窗口配置信息 */
|
/** 进程所有的窗口配置信息 */
|
||||||
windowFormConfigs?: WindowFormConfig[];
|
windowFormConfigs?: IWindowFormConfig[];
|
||||||
}
|
}
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
* <p>onProcessWindowFormFocus - 进程的窗体获取焦点</p>
|
* <p>onProcessWindowFormFocus - 进程的窗体获取焦点</p>
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
type AppProcessEvent =
|
type TAppProcessEvent =
|
||||||
'onProcessExit' |
|
'onProcessExit' |
|
||||||
'onProcessWindowFormOpen' |
|
'onProcessWindowFormOpen' |
|
||||||
'onProcessWindowFormExit' |
|
'onProcessWindowFormExit' |
|
||||||
@@ -1,17 +1,17 @@
|
|||||||
import AppProcess from '../process/AppProcess.ts'
|
import ProcessImpl from '../process/impl/ProcessImpl.ts'
|
||||||
import { AppProcessInfo } from '@/core/process/AppProcessInfo.ts'
|
import { ProcessInfoImpl } from '@/core/process/impl/ProcessInfoImpl.ts'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 基础系统进程
|
* 基础系统进程
|
||||||
*/
|
*/
|
||||||
export class BasicSystemProcess extends AppProcess{
|
export class BasicSystemProcess extends ProcessImpl{
|
||||||
private _isMounted: boolean = false;
|
private _isMounted: boolean = false;
|
||||||
|
|
||||||
public get isMounted() {
|
public get isMounted() {
|
||||||
return this._isMounted;
|
return this._isMounted;
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor(info: AppProcessInfo) {
|
constructor(info: ProcessInfoImpl) {
|
||||||
super(info)
|
super(info)
|
||||||
console.log('BasicSystemProcess')
|
console.log('BasicSystemProcess')
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import { AppProcessInfo } from '@/core/process/AppProcessInfo.ts'
|
import { ProcessInfoImpl } from '@/core/process/impl/ProcessInfoImpl.ts'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 基础系统进程信息
|
* 基础系统进程信息
|
||||||
*/
|
*/
|
||||||
export const BasicSystemProcessInfo = new AppProcessInfo({
|
export const BasicSystemProcessInfo = new ProcessInfoImpl({
|
||||||
name: 'basic-system',
|
name: 'basic-system',
|
||||||
title: '基础系统进程',
|
title: '基础系统进程',
|
||||||
isJustProcess: true,
|
isJustProcess: true,
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { v4 as uuidV4 } from 'uuid';
|
import { v4 as uuidV4 } from 'uuid';
|
||||||
import type AppProcess from '../process/AppProcess.ts'
|
import type ProcessImpl from '../process/impl/ProcessImpl.ts'
|
||||||
import XSystem from '../XSystem.ts'
|
import XSystem from '../XSystem.ts'
|
||||||
import type { AppProcessInfo } from '../process/AppProcessInfo.ts'
|
import type { ProcessInfoImpl } from '../process/impl/ProcessInfoImpl.ts'
|
||||||
|
|
||||||
export default class WindowForm {
|
export default class WindowForm {
|
||||||
private readonly _id: string = uuidV4();
|
private readonly _id: string = uuidV4();
|
||||||
@@ -11,10 +11,10 @@ export default class WindowForm {
|
|||||||
return this._id;
|
return this._id;
|
||||||
}
|
}
|
||||||
public get proc() {
|
public get proc() {
|
||||||
return XSystem.instance.processManages.findProcessById(this._procId)
|
return XSystem.instance.processManage.findProcessById(this._procId)
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor(proc: AppProcess, startName: string) {
|
constructor(proc: ProcessImpl, startName: string) {
|
||||||
this._procId = proc.id;
|
this._procId = proc.id;
|
||||||
console.log('WindowForm')
|
console.log('WindowForm')
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* 窗体配置
|
* 窗体配置
|
||||||
*/
|
*/
|
||||||
export interface WindowFormConfig {
|
export interface IWindowFormConfig {
|
||||||
/**
|
/**
|
||||||
* 窗体名称
|
* 窗体名称
|
||||||
*/
|
*/
|
||||||
Reference in New Issue
Block a user