const { app, Menu, BrowserWindow } = require("electron"); // Module to control application life. // Module to create native browser window. const path = require("path"); const url = require("url"); const isMac = process.platform === "darwin"; const template = [ // { role: 'appMenu' } ...(isMac ? [ { label: app.name, submenu: [ { role: "about" }, { type: "separator" }, { role: "services" }, { type: "separator" }, { role: "hide" }, { role: "hideothers" }, { role: "unhide" }, { type: "separator" }, { role: "quit" } ] } ] : []), // { role: 'fileMenu' } { label: "File", submenu: [isMac ? { role: "close" } : { role: "quit" }] }, // { role: 'editMenu' } { label: "Edit", submenu: [ { role: "undo" }, { role: "redo" }, { type: "separator" }, { role: "cut" }, { role: "copy" }, { role: "paste" }, ...(isMac ? [ { role: "pasteAndMatchStyle" }, { role: "delete" }, { role: "selectAll" }, { type: "separator" }, { label: "Speech", submenu: [{ role: "startspeaking" }, { role: "stopspeaking" }] } ] : [{ role: "delete" }, { type: "separator" }, { role: "selectAll" }]) ] }, // { role: 'viewMenu' } { label: "View", submenu: [ { role: "reload" }, { role: "forcereload" }, { role: "toggledevtools" }, { type: "separator" }, { role: "resetzoom" }, { role: "zoomin" }, { role: "zoomout" }, { type: "separator" }, { role: "togglefullscreen" } ] }, // { role: 'windowMenu' } { label: "Window", submenu: [ { role: "minimize" }, { role: "zoom" }, ...(isMac ? [ { type: "separator" }, { role: "front" }, { type: "separator" }, { role: "window" } ] : [{ role: "close" }]) ] }, { role: "help", submenu: [ { label: "Learn More", click: async () => { const { shell } = require("electron"); await shell.openExternal("https://www.milvus.io"); } }, { label: "Documentation", click: async () => { const { shell } = require("electron"); await shell.openExternal( "https://www.milvus.io/docs/about_milvus/overview.md" ); } }, { label: "Github", click: async () => { const { shell } = require("electron"); await shell.openExternal("https://github.com/milvus-io/milvus"); } } ] } ]; const menu = Menu.buildFromTemplate(template); Menu.setApplicationMenu(menu); // Keep a global reference of the window object, if you don't, the window will // be closed automatically when the JavaScript object is garbage collected. let mainWindow; function createWindow() { // Create the browser window. mainWindow = new BrowserWindow({ width: 1200, height: 800, webPreferences: { devTools: false }, icon: "./zilliz.png" }); // mainWindow.maximize(); // mainWindow.show(); // and load the index.html of the app. const startUrl = process.env.ELECTRON_START_URL || url.format({ pathname: path.join(__dirname, "./index.html"), protocol: "file:", slashes: true }); mainWindow.loadURL(startUrl); // Open the DevTools. // mainWindow.webContents.openDevTools(); // Emitted when the window is closed. mainWindow.on("closed", function () { // Dereference the window object, usually you would store windows // in an array if your app supports multi windows, this is the time // when you should delete the corresponding element. mainWindow = null; }); } // This method will be called when Electron has finished // initialization and is ready to create browser windows. // Some APIs can only be used after this event occurs. app.on("ready", createWindow); // Quit when all windows are closed. app.on("window-all-closed", function () { // On OS X it is common for applications and their menu bar // to stay active until the user quits explicitly with Cmd + Q if (process.platform !== "darwin") { app.quit(); } }); app.on("activate", function () { // On OS X it's common to re-create a window in the app when the // dock icon is clicked and there are no other windows open. if (mainWindow === null) { createWindow(); } });