Created
August 12, 2014 19:04
-
-
Save matths/fe075e431781dc933471 to your computer and use it in GitHub Desktop.
NodObjC Example of drawRect call (not working)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// dependencies | |
var ObjC = require('NodObjC'); | |
// ObjC dependencies | |
ObjC.import('Foundation'); | |
ObjC.import('Cocoa'); | |
ObjC.import('AppKit'); | |
ObjC.import('QuartzCore'); | |
// using ARC | |
var pool = ObjC.NSAutoreleasePool('new'); | |
// application | |
var app = ObjC.NSApplication('sharedApplication'); | |
// show dock icon - to hide use: ObjC.NSApplicationActivationPolicyProhibited | |
app('setActivationPolicy', ObjC.NSApplicationActivationPolicyRegular); | |
// app name string | |
var appName = ObjC('TestApp'); | |
var menuBar = ObjC.NSMenu('new')('autorelease'); | |
var appMenuItem = ObjC.NSMenuItem('new')('autorelease'); | |
menuBar('addItem', appMenuItem); | |
app('setMainMenu', menuBar); | |
var appMenu = ObjC.NSMenu('new')('autorelease'); | |
var quitTitle = ObjC('Quit ')('stringByAppendingString', appName); | |
var quitMenuItem = ObjC.NSMenuItem('alloc')('initWithTitle', quitTitle, 'action', 'terminate:', 'keyEquivalent', ObjC('q'))('autorelease'); | |
appMenu('addItem', quitMenuItem); | |
appMenuItem('setSubmenu', appMenu); | |
var styleMask = ObjC.NSTitledWindowMask | ObjC.NSClosableWindowMask; // | ObjC.NSResizableWindowMask; | |
var window = ObjC.NSWindow('alloc')('initWithContentRect', ObjC.NSMakeRect(0,0,400,400), 'styleMask', styleMask, 'backing', ObjC.NSBackingStoreBuffered, 'defer', false)('autorelease'); | |
window('cascadeTopLeftFromPoint', ObjC.NSMakePoint(20,20)); | |
window('setTitle', appName); | |
// set up the app delegate | |
var AppDelegate = ObjC.NSObject.extend('AppDelegate'); | |
AppDelegate.addMethod('applicationDidFinishLaunching:', 'v@:@', function (self, _cmd, notif) { | |
console.log('got applicationDidFinishLauching'); | |
console.log(notif); | |
}); | |
AppDelegate.register(); | |
var appDelegate = AppDelegate('alloc')('init'); | |
app('setDelegate', appDelegate); | |
var RedRectView = ObjC.NSView.extend('RedRectView'); | |
RedRectView.addMethod('drawRect:', 'v@:@', function (self, _cmd, rect) { | |
// console.log(self); | |
// ObjC.NSColor('redColor')('set'); | |
// ObjC.NSRectFill(ObjC.NSRectMake(0,0,100,100)); | |
// [super drawRect:rect]; | |
// RedRectView.getSuperclass()('drawRect', self); | |
}); | |
RedRectView.register(); | |
var redRectView = RedRectView('alloc')('initWithFrame', ObjC.NSMakeRect(0,0,100,100)); | |
window('contentView')('addSubview', redRectView); | |
window('makeKeyAndOrderFront', window); | |
app('activateIgnoringOtherApps', true); | |
app('run'); | |
pool('release'); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Try this (note you'll need to use the main master branch off of github.com, as the new version isn't in NPM yet):