import { app, BrowserWindow, Menu, MenuItem, dialog, nativeTheme } from "electron"; import AppMenu from "./AppMenu"; import Settings from "./Settings"; import MainEventType from "../common/MainEventType"; import electronLocalshortcut from "electron-localshortcut"; // 一些暴露给render-process的全局变量 export interface Global { settings: Settings; } declare var global: Global; export class MainProcess { mainWindow: BrowserWindow; appMenu: AppMenu; settings: Settings; constructor() { nativeTheme.themeSource = "dark"; app.on("ready", () => { this.createWindow(); electronLocalshortcut.register(this.mainWindow, "Ctrl+C", () => { this.mainWindow.webContents.send(MainEventType.COPY_NODE); }); electronLocalshortcut.register(this.mainWindow, "Ctrl+V", () => { this.mainWindow.webContents.send(MainEventType.PASTE_NODE); }); }); app.on("window-all-closed", () => { if (process.platform !== "darwin") { app.quit(); } }); app.on("activate", () => { if (this.mainWindow === null) { this.createWindow(); } }); } createWindow() { this.settings = new Settings(); global.settings = this.settings; this.mainWindow = new BrowserWindow({ width: 1280, height: 800, webPreferences: { nodeIntegration: true, enableRemoteModule: true, }, // fullscreenable:false, // maximizable:false }); this.mainWindow.maximize(); // mainWindow.webContents.openDevTools(); this.mainWindow.loadFile("index.html"); this.mainWindow.on("closed", function () { this.mainWindow = null; }); this.appMenu = new AppMenu(this); this.rebuildMenu(); } rebuildMenu() { Menu.setApplicationMenu(this.appMenu.createMenu()); } } export default new MainProcess();