Skip to main content
Glama
menu.ts5.75 kB
/** * Native Menu Bar for Electron */ import { app, Menu, MenuItemConstructorOptions, shell, BrowserWindow } from 'electron'; const isMac = process.platform === 'darwin'; export function createMenu(): Menu { const template: MenuItemConstructorOptions[] = [ // App menu (macOS only) ...(isMac ? [{ label: app.name, submenu: [ { role: 'about' as const }, { type: 'separator' as const }, { role: 'services' as const }, { type: 'separator' as const }, { role: 'hide' as const }, { role: 'hideOthers' as const }, { role: 'unhide' as const }, { type: 'separator' as const }, { role: 'quit' as const }, ], }] : []), // File menu { label: 'File', submenu: [ { label: 'New Diagram', accelerator: 'CmdOrCtrl+N', click: () => { const window = BrowserWindow.getFocusedWindow(); window?.webContents.send('menu:newDiagram'); }, }, { type: 'separator' }, { label: 'Export', submenu: [ { label: 'Export as SVG...', accelerator: 'CmdOrCtrl+Shift+S', click: () => { const window = BrowserWindow.getFocusedWindow(); window?.webContents.send('menu:exportSVG'); }, }, { label: 'Export as PNG...', accelerator: 'CmdOrCtrl+Shift+P', click: () => { const window = BrowserWindow.getFocusedWindow(); window?.webContents.send('menu:exportPNG'); }, }, { label: 'Export as PDF...', click: () => { const window = BrowserWindow.getFocusedWindow(); window?.webContents.send('menu:exportPDF'); }, }, ], }, { type: 'separator' }, isMac ? { role: 'close' as const } : { role: 'quit' as const }, ], }, // Edit menu { label: 'Edit', submenu: [ { role: 'undo' as const }, { role: 'redo' as const }, { type: 'separator' as const }, { role: 'cut' as const }, { role: 'copy' as const }, { role: 'paste' as const }, ...(isMac ? [ { role: 'pasteAndMatchStyle' as const }, { role: 'delete' as const }, { role: 'selectAll' as const }, ] : [ { role: 'delete' as const }, { type: 'separator' as const }, { role: 'selectAll' as const }, ]), ], }, // View menu { label: 'View', submenu: [ { label: 'Toggle Sidebar', accelerator: 'CmdOrCtrl+B', click: () => { const window = BrowserWindow.getFocusedWindow(); window?.webContents.send('menu:toggleSidebar'); }, }, { label: 'Toggle Theme', accelerator: 'CmdOrCtrl+Shift+T', click: () => { const window = BrowserWindow.getFocusedWindow(); window?.webContents.send('menu:toggleTheme'); }, }, { type: 'separator' }, { label: 'Zoom In', accelerator: 'CmdOrCtrl+Plus', click: () => { const window = BrowserWindow.getFocusedWindow(); window?.webContents.send('menu:zoomIn'); }, }, { label: 'Zoom Out', accelerator: 'CmdOrCtrl+-', click: () => { const window = BrowserWindow.getFocusedWindow(); window?.webContents.send('menu:zoomOut'); }, }, { label: 'Reset Zoom', accelerator: 'CmdOrCtrl+0', click: () => { const window = BrowserWindow.getFocusedWindow(); window?.webContents.send('menu:zoomReset'); }, }, { type: 'separator' }, { role: 'reload' as const }, { role: 'forceReload' as const }, { role: 'toggleDevTools' as const }, { type: 'separator' }, { role: 'resetZoom' as const }, { role: 'zoomIn' as const }, { role: 'zoomOut' as const }, { type: 'separator' }, { role: 'togglefullscreen' as const }, ], }, // Window menu { label: 'Window', submenu: [ { role: 'minimize' as const }, { role: 'zoom' as const }, ...(isMac ? [ { type: 'separator' as const }, { role: 'front' as const }, { type: 'separator' as const }, { role: 'window' as const }, ] : [ { role: 'close' as const }, ]), ], }, // Help menu { label: 'Help', submenu: [ { label: 'Documentation', click: async () => { await shell.openExternal('https://github.com/abrinsmead/mindpilot-mcp#readme'); }, }, { label: 'Mermaid Documentation', click: async () => { await shell.openExternal('https://mermaid.js.org/'); }, }, { type: 'separator' }, { label: 'Report Issue', click: async () => { await shell.openExternal('https://github.com/abrinsmead/mindpilot-mcp/issues'); }, }, { type: 'separator' }, { label: 'About Mindpilot', click: () => { const window = BrowserWindow.getFocusedWindow(); window?.webContents.send('menu:about'); }, }, ], }, ]; return Menu.buildFromTemplate(template); }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/abrinsmead/mindpilot-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server