MCPcopy
hub / github.com/wavetermdev/waveterm / makeFullAppMenu

Function makeFullAppMenu

emain/emain-menu.ts:331–378  ·  view source on GitHub ↗
(callbacks: AppMenuCallbacks, workspaceOrBuilderId?: string)

Source from the content-addressed store, hash-verified

329}
330
331async function makeFullAppMenu(callbacks: AppMenuCallbacks, workspaceOrBuilderId?: string): Promise<Electron.Menu> {
332 const numWaveWindows = getAllWaveWindows().length;
333 const webContents = workspaceOrBuilderId && getWebContentsByWorkspaceOrBuilderId(workspaceOrBuilderId);
334 const appMenuItems = makeAppMenuItems(webContents);
335
336 const isBuilderWindowFocused = focusedBuilderWindow != null;
337 let fullscreenOnLaunch = false;
338 let fullConfig: FullConfigType = null;
339 try {
340 fullConfig = await RpcApi.GetFullConfigCommand(ElectronWshClient);
341 fullscreenOnLaunch = fullConfig?.settings["window:fullscreenonlaunch"];
342 } catch (e) {
343 console.error("Error fetching config:", e);
344 }
345 const editMenu = makeEditMenu(fullConfig);
346 const fileMenu = makeFileMenu(numWaveWindows, callbacks, fullConfig);
347 const viewMenu = makeViewMenu(webContents, callbacks, isBuilderWindowFocused, fullscreenOnLaunch);
348 let workspaceMenu: Electron.MenuItemConstructorOptions[] = null;
349 try {
350 workspaceMenu = await getWorkspaceMenu();
351 } catch (e) {
352 console.error("getWorkspaceMenu error:", e);
353 }
354 const windowMenu: Electron.MenuItemConstructorOptions[] = [
355 { role: "minimize", accelerator: "" },
356 { role: "zoom" },
357 { type: "separator" },
358 { role: "front" },
359 ];
360 const menuTemplate: Electron.MenuItemConstructorOptions[] = [
361 { role: "appMenu", submenu: appMenuItems },
362 { role: "fileMenu", submenu: fileMenu },
363 { role: "editMenu", submenu: editMenu },
364 { role: "viewMenu", submenu: viewMenu },
365 ];
366 if (workspaceMenu != null && !isBuilderWindowFocused) {
367 menuTemplate.push({
368 label: "Workspace",
369 id: "workspace-menu",
370 submenu: workspaceMenu,
371 });
372 }
373 menuTemplate.push({
374 role: "windowMenu",
375 submenu: windowMenu,
376 });
377 return electron.Menu.buildFromTemplate(menuTemplate);
378}
379
380export function instantiateAppMenu(workspaceOrBuilderId?: string): Promise<electron.Menu> {
381 return makeFullAppMenu(

Callers 1

instantiateAppMenuFunction · 0.85

Calls 9

getAllWaveWindowsFunction · 0.90
makeAppMenuItemsFunction · 0.85
makeEditMenuFunction · 0.85
makeFileMenuFunction · 0.85
makeViewMenuFunction · 0.85
getWorkspaceMenuFunction · 0.85
pushMethod · 0.80
GetFullConfigCommandMethod · 0.65

Tested by

no test coverage detected