mirror of
https://github.com/pulsar-edit/pulsar.git
synced 2024-09-20 15:37:46 +03:00
Add partial implementation Native.addMenuItem.
It takes a path like "Menu 1 > Menu 2 > Item", and builds a series of submenus if needed along that path, then adds the final item at its terminus. Specs still need to be fleshed out further.
This commit is contained in:
parent
68ce5544a7
commit
00bccdca96
21
spec/stdlib/native-spec.coffee
Normal file
21
spec/stdlib/native-spec.coffee
Normal file
@ -0,0 +1,21 @@
|
||||
Native = require 'native'
|
||||
|
||||
describe "Native", ->
|
||||
nativeModule = null
|
||||
|
||||
beforeEach ->
|
||||
nativeModule = new Native
|
||||
|
||||
fdescribe "addMenuItem(path, keyBinding)", ->
|
||||
mainMenuItems = null
|
||||
|
||||
beforeEach ->
|
||||
mainMenuItems = OSX.NSApp.mainMenu.itemArray
|
||||
|
||||
it "adds the item at the path terminus to the main menu, adding submenus as needed", ->
|
||||
initialMenuCount = mainMenuItems.length
|
||||
|
||||
nativeModule.addMenuItem('Submenu > Item')
|
||||
|
||||
expect(mainMenuItems.length).toBe initialMenuCount + 1
|
||||
|
@ -1,3 +1,5 @@
|
||||
_ = require 'underscore'
|
||||
|
||||
module.exports =
|
||||
class Native
|
||||
alert: (message, detailedMessage, buttons) ->
|
||||
@ -43,3 +45,23 @@ class Native
|
||||
resetMainMenu: (menu) ->
|
||||
OSX.NSApp.resetMainMenu
|
||||
|
||||
addMenuItem: (path) ->
|
||||
pathComponents = path.split /\s*>\s*/
|
||||
submenu = @buildSubmenuPath(OSX.NSApp.mainMenu, pathComponents[0..-2])
|
||||
title = _.last(pathComponents)
|
||||
item = OSX.AtomMenuItem.alloc.initWithTitle_action_keyEquivalent(title, null, "").autorelease
|
||||
submenu.addItem(item)
|
||||
|
||||
buildSubmenuPath: (menu, path) ->
|
||||
return menu if path.length == 0
|
||||
|
||||
first = path[0]
|
||||
unless item = menu.itemWithTitle(first)
|
||||
item = OSX.AtomMenuItem.alloc.initWithTitle_action_keyEquivalent(first, null, "").autorelease
|
||||
menu.addItem(item)
|
||||
unless submenu = item.submenu
|
||||
submenu = OSX.NSMenu.alloc.initWithTitle(first)
|
||||
item.submenu = submenu
|
||||
|
||||
@buildSubmenuPath(submenu, path[1..-1])
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user