add Properties

This commit is contained in:
zhandouxiaojiji committed 2020-10-15 13:24:25 +08:00
1 parent 31d986c5d2
commit d0690f0398
8 files changed
+181 -36

No files matched your search

+8 -8
View File
@@ -167,16 +167,16 @@ export default class AppMenu {
}
private createNodeMenu() {
const typeItems: MenuItemConstructorOptions[] = [];
const classifyItems: MenuItemConstructorOptions[] = [];
const map: { [key: string]: MenuItemConstructorOptions } = {}
for (let t of this.settings.nodeTypes) {
for (let t of this.settings.nodeClassify) {
let item: MenuItemConstructorOptions = {
id: t.type,
label: `${t.type}(${t.desc})`,
id: t.classify,
label: `${t.classify}(${t.desc})`,
submenu: [],
};
typeItems.push(item);
map[t.type] = item;
classifyItems.push(item);
map[t.classify] = item;
}
const other: MenuItemConstructorOptions = {
id: 'other',
@@ -205,12 +205,12 @@ export default class AppMenu {
}
if(hasOther) {
typeItems.push(other);
classifyItems.push(other);
}
return new MenuItem({
label: "新建节点",
submenu: typeItems
submenu: classifyItems
});
}
}
+14 -12
View File
@@ -1,7 +1,8 @@
import * as fs from 'fs';
import { BehaviorNodeTypeModel } from '../common/BehaviorTreeModel';
export interface BehaviorNodeType {
type: string;
export interface BehaviorNodeClassify {
classify: string;
desc?: string;
}
@@ -9,16 +10,16 @@ export interface SettingsModel {
recentWorkspaces?: string[];
recentFiles?: string[];
nodeConfigPath?: string; // 节点配置路径
nodeTypes?: BehaviorNodeType[];
nodeClassify?: BehaviorNodeClassify[];
}
const settingPath = 'settings.json';
const sampleNodeConfig = 'sample-node-config.json';
const sampleNodeTypes: BehaviorNodeType[] = [
{ type: "Composite", desc: "复合节点" },
{ type: "Decorator", desc: "修饰节点" },
{ type: "Condition", desc: "条件节点" },
{ type: "Action", desc: "行为节点" },
const sampleNodeClassify: BehaviorNodeClassify[] = [
{ classify: "Composite", desc: "复合节点" },
{ classify: "Decorator", desc: "修饰节点" },
{ classify: "Condition", desc: "条件节点" },
{ classify: "Action", desc: "行为节点" },
]
export default class Settings {
@@ -32,7 +33,7 @@ export default class Settings {
recentWorkspaces: [],
recentFiles: [],
nodeConfigPath: sampleNodeConfig,
nodeTypes: sampleNodeTypes,
nodeClassify: sampleNodeClassify,
};
this.save();
}
@@ -49,10 +50,11 @@ export default class Settings {
}
get nodeConfig() {
const str = fs.readFileSync(this.nodeConfigPath, 'utf8');
return JSON.parse(str);
const types: BehaviorNodeTypeModel[] = JSON.parse(str);
return types;
}
get nodeTypes() {
return this.settings.nodeTypes;
get nodeClassify() {
return this.settings.nodeClassify;
}
set(config: SettingsModel) {
+8 -2
View File
@@ -1,13 +1,14 @@
import { app, BrowserWindow, Menu, MenuItem, dialog, nativeTheme } from 'electron';
import AppMenu from './AppMenu'
import Settings from './Settings';
import MainEventType from '../common/MainEventType';
export class MainProcess {
mainWindow: BrowserWindow;
appMenu: AppMenu;
settings: Settings;
constructor() {
nativeTheme.themeSource = 'dark';
nativeTheme.themeSource = 'dark';
app.on('ready', () => {
this.createWindow();
})
@@ -23,7 +24,7 @@ export class MainProcess {
});
}
createWindow (){
createWindow() {
this.settings = new Settings();
this.mainWindow = new BrowserWindow({
width: 1280,
@@ -41,6 +42,11 @@ export class MainProcess {
});
this.appMenu = new AppMenu(this);
this.rebuildMenu();
const lastWorkspace = this.settings.recentWorkspaces[0];
if(lastWorkspace) {
this.mainWindow.webContents.send(MainEventType.OPEN_WORKSPACE, lastWorkspace);
}
}
rebuildMenu() {