Handle copy/paste using $native

This commit is contained in:
Corey Johnson
2012-02-27 13:08:40 -08:00
parent 8cbf4331e4
commit 25133fc8d9
2 changed files with 82 additions and 45 deletions

View File

@@ -3,16 +3,7 @@ _ = require 'underscore'
module.exports =
class Native
alert: (message, detailedMessage, buttons) ->
alert = OSX.NSAlert.alloc.init
alert.setMessageText message
alert.setInformativeText detailedMessage
callbacks = {}
for label, callback of buttons
button = alert.addButtonWithTitle label
callbacks[button.tag] = callback
buttonTag = alert.runModal
return callbacks[buttonTag]()
$native.alert(message, detailedMessage, buttons)
# path - Optional. The String path to the file to base it on.
newWindow: (path) ->
@@ -38,49 +29,45 @@ class Native
panel.filenames.lastObject.valueOf()
writeToPasteboard: (text) ->
pb = OSX.NSPasteboard.generalPasteboard
pb.declareTypes_owner [OSX.NSStringPboardType], null
pb.setString_forType text, OSX.NSStringPboardType
$native.writeToPasteboard text
readFromPasteboard: (text) ->
pb = OSX.NSPasteboard.generalPasteboard
results = pb.readObjectsForClasses_options [OSX.NSString], null
results?[0]?.toString()
readFromPasteboard: ->
$native.readFromPasteboard()
resetMainMenu: (menu) ->
# OSX.NSApp.resetMainMenu
OSX.NSApp.resetMainMenu
addMenuItem: (itemPath, keyPattern) ->
# itemPathComponents = itemPath.split /\s*>\s*/
# submenu = @buildSubmenuPath(OSX.NSApp.mainMenu, itemPathComponents[0..-2])
# title = _.last(itemPathComponents)
# unless submenu.itemWithTitle(title)
# item = OSX.AtomMenuItem.alloc.initWithTitle_itemPath(title, itemPath).autorelease
# item.setKeyEquivalentModifierMask 0 # Because in Cocoa defaults it to NSCommandKeyMask
itemPathComponents = itemPath.split /\s*>\s*/
submenu = @buildSubmenuPath(OSX.NSApp.mainMenu, itemPathComponents[0..-2])
title = _.last(itemPathComponents)
unless submenu.itemWithTitle(title)
item = OSX.AtomMenuItem.alloc.initWithTitle_itemPath(title, itemPath).autorelease
item.setKeyEquivalentModifierMask 0 # Because in Cocoa defaults it to NSCommandKeyMask
# if keyPattern
# bindingSet = new (require('binding-set'))("*", {})
# keys = bindingSet.parseKeyPattern keyPattern
if keyPattern
bindingSet = new (require('binding-set'))("*", {})
keys = bindingSet.parseKeyPattern keyPattern
# modifierMask = (keys.metaKey and OSX.NSCommandKeyMask ) |
# (keys.shiftKey and OSX.NSShiftKeyMask) |
# (keys.altKey and OSX.NSAlternateKeyMask) |
# (keys.ctrlKey and OSX.NSControlKeyMask)
modifierMask = (keys.metaKey and OSX.NSCommandKeyMask ) |
(keys.shiftKey and OSX.NSShiftKeyMask) |
(keys.altKey and OSX.NSAlternateKeyMask) |
(keys.ctrlKey and OSX.NSControlKeyMask)
# item.setKeyEquivalent keys.key
# item.setKeyEquivalentModifierMask modifierMask
# submenu.addItem(item)
item.setKeyEquivalent keys.key
item.setKeyEquivalentModifierMask modifierMask
submenu.addItem(item)
buildSubmenuPath: (menu, path) ->
# return menu if path.length == 0
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
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])
@buildSubmenuPath(submenu, path[1..-1])