"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.setupApplicationMenu = setupApplicationMenu; const electron_1 = require("electron"); const utils_1 = require("./utils"); const updater_1 = require("./updater"); const providerSettings_1 = require("./providerSettings"); /** * Applies modifications to the default application menu. * Adds "New Window", "AI Provider Settings", and other items. */ function setupApplicationMenu(url) { const menu = electron_1.Menu.getApplicationMenu(); if (!menu) { return; } // Adds a "New Window" item to the top of the existing File menu. addItemToSubmenu(menu, 'File', 0, new electron_1.MenuItem({ label: 'New Window', accelerator: 'CmdOrCtrl+Shift+N', click: () => { (0, utils_1.createWindow)(url); }, })); // Add "AI Provider Settings" to the File menu addItemToSubmenu(menu, 'File', 1, new electron_1.MenuItem({ label: 'AI Provider Settings', accelerator: 'CmdOrCtrl+,', click: () => { electron_1.BrowserWindow.getAllWindows()[0]?.webContents.send('provider:open-settings'); electron_1.ipcMain.emit('provider:open-settings-request'); }, })); // Add separator after new items addItemToSubmenu(menu, 'File', 2, new electron_1.MenuItem({ type: 'separator', })); // Add "Check for Updates" to the application menu on macOS. if ((0, utils_1.isMacOS)()) { const appSubmenu = menu.items[0]?.submenu; if (appSubmenu) { appSubmenu.insert(1, new electron_1.MenuItem({ id: 'check-for-updates', label: updater_1.MenuUpdateStep.CheckForUpdates, click: (menuItem) => { const action = updater_1.updateActions[menuItem.label]; action?.(); }, })); } } // Adds Docs, AI Provider Settings, and Toggle Developer Tools to the Help menu addItemToSubmenu(menu, 'Help', 0, new electron_1.MenuItem({ label: 'Docs', click: async () => { await electron_1.shell.openExternal('https://ag-x.dev/docs'); }, })); addItemToSubmenu(menu, 'Help', 1, new electron_1.MenuItem({ label: 'AI Provider Settings', click: () => { electron_1.BrowserWindow.getAllWindows()[0]?.webContents.send('provider:open-settings'); electron_1.ipcMain.emit('provider:open-settings-request'); }, })); addItemToSubmenu(menu, 'Help', 2, new electron_1.MenuItem({ role: 'toggleDevTools', })); // Re-apply the menu so the change takes effect. electron_1.Menu.setApplicationMenu(menu); } /** * Adds a menu item to a submenu of the main application menu. */ function addItemToSubmenu(appMenu, submenuLabel, position, item) { const submenuItem = appMenu.items.find((item) => item.label === submenuLabel); if (!submenuItem?.submenu) { return; } submenuItem.submenu.insert(position, item); }