Skip to content

Instantly share code, notes, and snippets.

@trevor403
Forked from indexzero/cocoa-hello-world2.js
Last active December 22, 2015 14:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save trevor403/6488258 to your computer and use it in GitHub Desktop.
Save trevor403/6488258 to your computer and use it in GitHub Desktop.
// This example adapted from Matt Gallagher's "Minimalist Cocoa Programming"
// blog article:
// http://cocoawithlove.com/2010/09/minimalist-cocoa-programming.html
var $ = require('NodObjC')
$.import('Cocoa')
var pool = $.NSAutoreleasePool('alloc')('init')
, app = $.NSApplication('sharedApplication')
app('setActivationPolicy', $.NSApplicationActivationPolicyRegular)
//set dock icon
var ic = $.NSImage('alloc')('initWithContentsOfFile', $('./icon.png'))
app('setApplicationIconImage', ic)
var menuBar = $.NSMenu('alloc')('init')('autorelease')
, appMenuItem = $.NSMenuItem('alloc')('init')('autorelease')
menuBar('addItem', appMenuItem)
app('setMainMenu', menuBar)
var appMenu = $.NSMenu('alloc')('init')('autorelease')
, appName = $._('Hello NodeJS!')
, quitTitle = $._('Quit ')('stringByAppendingString', appName)
, quitMenuItem = $.NSMenuItem('alloc')('initWithTitle', quitTitle
,'action', 'terminate:'
,'keyEquivalent', $._('q'))('autorelease')
appMenu('addItem', quitMenuItem)
appMenuItem('setSubmenu', appMenu)
var styleMask = $.NSTitledWindowMask
| $.NSResizableWindowMask
| $.NSClosableWindowMask
var window = $.NSWindow('alloc')('initWithContentRect', $.NSMakeRect(0,0,200,200)
,'styleMask', styleMask
,'backing', $.NSBackingStoreBuffered
,'defer', false)('autorelease')
window('cascadeTopLeftFromPoint', $.NSMakePoint(20,20))
window('setTitle', appName)
window('makeKeyAndOrderFront', window)
// set up the app delegate
var AppDelegate = $.NSObject.extend('AppDelegate')
AppDelegate.addMethod('applicationDidFinishLaunching:', 'v@:@', function (self, _cmd, notif) {
console.log('got applicationDidFinishLauching')
console.log(notif)
})
AppDelegate.register()
var delegate = AppDelegate('alloc')('init')
app('setDelegate', delegate)
app('activateIgnoringOtherApps', true)
app('run')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment