You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
2.1 KiB
TypeScript
71 lines
2.1 KiB
TypeScript
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();
|