parent
ac28db3a52
commit
b106cc8cdf
@ -0,0 +1,24 @@ |
||||
import {app, Menu, BrowserWindow, ipcMain} from 'electron'; |
||||
import { createWindow } from '../main'; |
||||
|
||||
|
||||
const commands: Record<string, (focusedWindow?: BrowserWindow) => void> = { |
||||
'window:new': () => { |
||||
// If window is created on the same tick, it will consume event too
|
||||
setTimeout(createWindow, 0); |
||||
}, |
||||
'folder:open': (focusedWindow) => { |
||||
if (focusedWindow) { |
||||
ipcMain.emit('fs:openFolder', focusedWindow.webContents.id); |
||||
} |
||||
} |
||||
|
||||
}; |
||||
|
||||
|
||||
export const execCommand = (command: string, focusedWindow?: BrowserWindow) => { |
||||
const fn = commands[command]; |
||||
if (fn) { |
||||
fn(focusedWindow); |
||||
} |
||||
}; |
@ -0,0 +1,56 @@ |
||||
// This menu label is overrided by OSX to be the appName
|
||||
// The label is set to appName here so it matches actual behavior
|
||||
import {app, BrowserWindow, MenuItemConstructorOptions} from 'electron'; |
||||
|
||||
export default ( |
||||
commandKeys: Record<string, string>, |
||||
execCommand: (command: string, focusedWindow?: BrowserWindow) => void, |
||||
showAbout: () => void |
||||
): MenuItemConstructorOptions => { |
||||
return { |
||||
label: `${app.name}`, |
||||
submenu: [ |
||||
{ |
||||
label: 'About Remix', |
||||
click() { |
||||
showAbout(); |
||||
} |
||||
}, |
||||
{ |
||||
type: 'separator' |
||||
}, |
||||
{ |
||||
label: 'Preferences...', |
||||
accelerator: commandKeys['window:preferences'], |
||||
click() { |
||||
execCommand('window:preferences'); |
||||
} |
||||
}, |
||||
{ |
||||
type: 'separator' |
||||
}, |
||||
{ |
||||
role: 'services', |
||||
submenu: [] |
||||
}, |
||||
{ |
||||
type: 'separator' |
||||
}, |
||||
{ |
||||
role: 'hide' |
||||
}, |
||||
{ |
||||
role: 'hideOthers' |
||||
}, |
||||
{ |
||||
role: 'unhide' |
||||
}, |
||||
{ |
||||
type: 'separator' |
||||
}, |
||||
{ |
||||
role: 'quit' |
||||
} |
||||
] |
||||
}; |
||||
}; |
@ -0,0 +1,28 @@ |
||||
import {BrowserWindow, MenuItemConstructorOptions} from 'electron'; |
||||
|
||||
export default ( |
||||
commandKeys: Record<string, string>, |
||||
execCommand: (command: string, focusedWindow?: BrowserWindow) => void |
||||
): MenuItemConstructorOptions => { |
||||
const isMac = process.platform === 'darwin'; |
||||
|
||||
return { |
||||
label: 'File', |
||||
submenu: [ |
||||
{ |
||||
label: 'New Window', |
||||
accelerator: commandKeys['window:new'], |
||||
click(item, focusedWindow) { |
||||
execCommand('window:new', focusedWindow); |
||||
} |
||||
}, |
||||
{ |
||||
label: 'Open Folder', |
||||
accelerator: commandKeys['folder:open'], |
||||
click(item, focusedWindow) { |
||||
execCommand('folder:open', focusedWindow); |
||||
} |
||||
} |
||||
] |
||||
}; |
||||
}; |
@ -0,0 +1,26 @@ |
||||
import {BrowserWindow, MenuItemConstructorOptions} from 'electron'; |
||||
|
||||
export default ( |
||||
commandKeys: Record<string, string>, |
||||
execCommand: (command: string, focusedWindow?: BrowserWindow) => void |
||||
): MenuItemConstructorOptions => { |
||||
const isMac = process.platform === 'darwin'; |
||||
|
||||
return { |
||||
label: 'REMIX', |
||||
submenu: [ |
||||
{ |
||||
label: 'Close', |
||||
accelerator: commandKeys['pane:close'], |
||||
click(item, focusedWindow) { |
||||
execCommand('pane:close', focusedWindow); |
||||
} |
||||
}, |
||||
{ |
||||
label: isMac ? 'Close Window' : 'Quit', |
||||
role: 'close', |
||||
accelerator: commandKeys['window:close'] |
||||
} |
||||
] |
||||
}; |
||||
}; |
Loading…
Reference in new issue