From e057d350482451830514230787d5985b60affc22 Mon Sep 17 00:00:00 2001 From: probablycorey Date: Sat, 17 Aug 2013 10:22:08 -0700 Subject: [PATCH] Create a MenuBar object (instead of treating it like a singleton.) --- src/app/menu-bar.coffee | 22 ++++++++++++++-------- src/window.coffee | 2 +- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/app/menu-bar.coffee b/src/app/menu-bar.coffee index 76fa9480a..3716b9c30 100644 --- a/src/app/menu-bar.coffee +++ b/src/app/menu-bar.coffee @@ -2,7 +2,14 @@ ipc = require 'ipc' module.exports = class MenuBar - @show: (keyBindingsByCommand) -> + keyBindingsByCommand: null + + constructor: (@keyBindingsByCommand) -> + menuTemplate = @getMenuTemplate() + @parseMenuTemplate(menuTemplate, keyBindingsByCommand) + ipc.sendChannel 'build-menu-bar-from-template', menuTemplate + + getMenuTemplate: -> atomMenu = label: 'Atom' submenu: [ @@ -67,17 +74,16 @@ class MenuBar label: '\uD83D\uDC80' # Skull emoji submenu: [ { label: 'In Development Mode', enabled: false } ] - @addKeyBindings(menu, keyBindingsByCommand) - ipc.sendChannel 'build-menu-bar-from-template', menu + menu - @addKeyBindings: (menuItems, keyBindingsByCommand) -> + parseMenuTemplate: (menuItems) -> for menuItem in menuItems if menuItem.command - menuItem.accelerator = @acceleratorForCommand(menuItem.command, keyBindingsByCommand) - @addKeyBindings(menuItem.submenu, keyBindingsByCommand) if menuItem.submenu + menuItem.accelerator = @acceleratorForCommand(menuItem.command) + @parseMenuTemplate(menuItem.submenu) if menuItem.submenu - @acceleratorForCommand: (command, keyBindingsByCommand) -> - keyBinding = keyBindingsByCommand[command]?[0] + acceleratorForCommand: (command) -> + keyBinding = @keyBindingsByCommand[command]?[0] return null unless keyBinding modifiers = keyBinding.split('-') diff --git a/src/window.coffee b/src/window.coffee index 06e4701db..8540fc6e1 100644 --- a/src/window.coffee +++ b/src/window.coffee @@ -55,7 +55,7 @@ window.startEditorWindow = -> atom.activatePackages() keymap.loadUserKeymaps() atom.requireUserInitScript() - MenuBar.show(keymap.toObject()) + new MenuBar(keymap.toObject()) $(window).on 'unload', -> unloadEditorWindow(); false atom.show() atom.focus()