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" ; export interface Global { settings : Settings ; } declare var 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 , } , } ) ; this . mainWindow . maximize ( ) ; 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 ( ) ;