From 95689ec7128908851360f07d7ed9616ab1a6eaa9 Mon Sep 17 00:00:00 2001 From: codetypes Date: Tue, 12 Mar 2024 09:46:56 +0800 Subject: [PATCH] specify output directory when build --- main-process/AppMenu.ts | 14 ++++++++-- package.json | 2 +- render-process/TreeTabs.tsx | 13 +++------ render-process/index.tsx | 54 ++++++++++++++++++++++--------------- 4 files changed, 49 insertions(+), 34 deletions(-) diff --git a/main-process/AppMenu.ts b/main-process/AppMenu.ts index d35291c..6d7b5ea 100644 --- a/main-process/AppMenu.ts +++ b/main-process/AppMenu.ts @@ -20,6 +20,7 @@ export default class AppMenu { private mainWindow: BrowserWindow; private webContents: WebContents; private settings: Settings; + private buildDir?: string; constructor(mainProcess: MainProcess) { this.mainProcess = mainProcess; @@ -139,8 +140,17 @@ export default class AppMenu { { label: "构建", accelerator: "CommandOrControl+b", - click: () => { - this.webContents.send(MainEventType.BUILD); + click: async () => { + if (!this.buildDir) { + const res = await dialog.showOpenDialog({ + properties: ["openDirectory"], + }); + if (res.canceled) { + return; + } + this.buildDir = res.filePaths[0]; + } + this.webContents.send(MainEventType.BUILD, this.buildDir); }, }, ], diff --git a/package.json b/package.json index b2d5b07..4e3f972 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "behavior3editor", - "version": "0.2.0", + "version": "0.2.1", "description": "行为树编辑器", "main": "./dist/main.js", "scripts": { diff --git a/render-process/TreeTabs.tsx b/render-process/TreeTabs.tsx index 9f15d55..66ab46c 100644 --- a/render-process/TreeTabs.tsx +++ b/render-process/TreeTabs.tsx @@ -2,8 +2,8 @@ import { Tabs, message } from "antd"; import { ipcRenderer } from "electron"; import * as fs from "fs"; import * as path from "path"; -import * as Utils from "../common/Utils"; import React, { Component } from "react"; +import * as Utils from "../common/Utils"; import Editor from "./Editor"; import "antd/dist/antd.dark.css"; @@ -72,7 +72,7 @@ export default class TreeTabs extends Component { message.success("已保存所有行为树"); }); - ipcRenderer.on(MainEventType.BUILD, () => { + ipcRenderer.on(MainEventType.BUILD, async (event, buildDir) => { for (let k in this.editors) { let editor = this.editors[k]; editor.save(); @@ -80,21 +80,16 @@ export default class TreeTabs extends Component { const settings = Utils.getRemoteSettings(); const workdir = settings.workdir; - if (!fs.existsSync(workdir)) { - console.log("workdir not found:", workdir); - return; - } const files = fs.readdirSync(workdir).filter((f) => { return f.endsWith(".json"); }); for (const path of files) { - const builddir = fs.realpathSync(workdir + "/../build", "utf-8"); - fs.mkdirSync(builddir, { recursive: true }); - const buildpath = builddir + "/" + path; + const buildpath = buildDir + "/" + path; console.log("build:", buildpath); const treeModel = Utils.createBuildData(path, settings); fs.writeFileSync(buildpath, JSON.stringify(treeModel, null, 2)); } + message.success("已构建所有行为树"); }); ipcRenderer.on(MainEventType.UNDO, () => { diff --git a/render-process/index.tsx b/render-process/index.tsx index 713be82..fe67df5 100644 --- a/render-process/index.tsx +++ b/render-process/index.tsx @@ -5,7 +5,7 @@ import { Layout, message, Tabs } from "antd"; import * as Utils from "../common/Utils"; import MainEventType from "../common/MainEventType"; import Settings from "../main-process/Settings"; -import {ipcRenderer} from "electron"; +import { ipcRenderer } from "electron"; import "antd/dist/antd.dark.css"; import "./index.css"; import RegisterNode from "./RegisterNode"; @@ -53,20 +53,20 @@ export default class Main extends Component { } SyncRequest("POST", serverModel.host, { body: JSON.stringify({ - cmd:"btree.reload", + cmd: "btree.reload", data: { - trees: this.tabs.getOpenTreesModel() + trees: this.tabs.getOpenTreesModel(), }, session: this.session++, timestamp: Date.now(), - }) + }), }); message.success("服务器已更新"); - }) + }); - ipcRenderer.on(MainEventType.BATCH_EXEC, (event: any, path: string)=>{ + ipcRenderer.on(MainEventType.BATCH_EXEC, (event: any, path: string) => { BatchExec(path, this.state.workdir); - }) + }); console.log("workdir", this.settings.curWorkspace.getWorkdir()); setTimeout(() => { @@ -113,7 +113,7 @@ export default class Main extends Component { sider.style.maxWidth = width + "px"; sider.style.minWidth = "0px"; sider.style.flex = ""; - reSizer.style.left = (width - 5) + "px"; + reSizer.style.left = width - 5 + "px"; content.style.width = window.innerWidth - width + "px"; } @@ -122,16 +122,27 @@ export default class Main extends Component { document.documentElement.removeEventListener("mouseup", stopDrag, false); } - reSizer.addEventListener("mouseover", function() { - reSizer.style.opacity = "1"; - reSizer.addEventListener("mousedown", initDrag, false); - reSizer.addEventListener("mouseout", function init() { - reSizer.style.opacity = "0"; - }, false); - }, false); + reSizer.addEventListener( + "mouseover", + function () { + reSizer.style.opacity = "1"; + reSizer.addEventListener("mousedown", initDrag, false); + reSizer.addEventListener( + "mouseout", + function init() { + reSizer.style.opacity = "0"; + }, + false + ); + }, + false + ); - window.addEventListener("resize", function() { - const currentWidth = parseInt(document.defaultView.getComputedStyle(reSizerParent).width, 10); + window.addEventListener("resize", function () { + const currentWidth = parseInt( + document.defaultView.getComputedStyle(reSizerParent).width, + 10 + ); setWidth(currentWidth); }); @@ -147,7 +158,7 @@ export default class Main extends Component { const { workdir, workspace } = this.state; document.title = `行为树编辑器 - ${workspace}`; return ( - + {workdir !== "" ? ( -
+
{ this.tabs = ref; }} - onTabSelected={(path)=>{ + onTabSelected={(path) => { this.explorer.selectNode(path); - } - } + }} />