GUI Programming with MacRuby

46
MacRuby GUI Programming with

Transcript of GUI Programming with MacRuby

Page 1: GUI Programming with MacRuby

MacRubyGUI Programming with

Page 2: GUI Programming with MacRuby

GUI Programming with

MacRubyWho?

What?

When?

Where?

Why?

How?

Page 3: GUI Programming with MacRuby

Who?

Page 4: GUI Programming with MacRuby

Erik Michaels-Ober?

Page 5: GUI Programming with MacRuby

sferikon Twitter, GitHub, Gmail, IRC, &c.

Page 6: GUI Programming with MacRuby

Code for AmericaAPPLY WITHIN

Page 7: GUI Programming with MacRuby

I’ve committed to...rails

rails_admin

merb_admin

twitter

twurl

simple_oauth

oauth2

faraday

thor

multi_json

multi_xml

octokit

rvm

bunder

travis-ci

dummy_data

git-pulls

mlb

Page 8: GUI Programming with MacRuby

HubCap

Page 9: GUI Programming with MacRuby

Who else?

@lrz

@merbist

@rich_kilmer

@alloy

@vincentisambart

@macruby

@benstiglitz

@importantshock

@naixn

@watson1978

@Psychs

macruby-devel

Page 10: GUI Programming with MacRuby

What?

Page 11: GUI Programming with MacRuby

1. A complete implementation of Ruby 1.9

What

MacRuby

Page 12: GUI Programming with MacRuby

MacRuby apps Ruby apps

Page 13: GUI Programming with MacRuby

DEMO

Page 14: GUI Programming with MacRuby

1. A complete implementation of Ruby 1.9

2. Allows you to script existing Mac apps

3. Allows you to create new Mac apps

What

MacRuby

Page 15: GUI Programming with MacRuby

Let me tell you a secret...

Page 16: GUI Programming with MacRuby
Page 17: GUI Programming with MacRuby

AppleScript

Page 18: GUI Programming with MacRuby

Objective-C

Page 19: GUI Programming with MacRuby

object.method parameter

Ruby Method Invocation

Page 20: GUI Programming with MacRuby

Objective-C Method Invocation

[object method:parameter];

Page 21: GUI Programming with MacRuby

array = []

Ruby Array Initialization and Assignment

Page 22: GUI Programming with MacRuby

NSMutableArray *array = [[NSMutableArray alloc] init];

Objective-C Array Initialization and Assignment

Page 23: GUI Programming with MacRuby

RubyCocoa

Page 24: GUI Programming with MacRuby
Page 25: GUI Programming with MacRuby

require 'hotcocoa'include HotCocoa

application do |app|  win = window :size => [100,50]  b = button :title => 'Hello'  b.on_action { puts 'World!' }  win << bend

MacRuby Hello World

Page 26: GUI Programming with MacRuby

require 'osx/cocoa'include OSX

app = NSApplication.sharedApplicationwin = NSWindow.alloc.initWithContentRect_styleMask_backing_defer(  [0, 0, 200, 60],  NSTitledWindowMask|NSClosableWindowMask|NSMiniaturizableWindowMask|NSResizableWindowMask,  NSBackingStoreBuffered, false)

win.title = 'Hello World'button = NSButton.alloc.initWithFrame(NSZeroRect)win.contentView.addSubview(button)

button.bezelStyle = NSRoundedBezelStylebutton.title = 'Hello!'button.sizeToFit

button.frameOrigin = NSMakePoint((win.contentView.frameSize.width / 2.0) - (button.frameSize.width / 2.0),  (win.contentView.frameSize.height / 2.0) - (button.frameSize.height / 2.0))button_controller = Object.new

def button_controller.sayHello(sender)  puts "Hello World!"end

button.target = button_controllerbutton.action = 'sayHello:'win.displaywin.orderFrontRegardless

app.run

RubyCocoa Hello World

Page 27: GUI Programming with MacRuby

Java

Page 28: GUI Programming with MacRuby

Objective-J

Page 29: GUI Programming with MacRuby

When?

Page 30: GUI Programming with MacRuby

When

MacRuby

NOW!Version 0.10

Version 1.0 coming soon

Page 31: GUI Programming with MacRuby

MacRuby will be included with Mac OS X 10.7 Lion**currently as a private framework :(

When

MacRuby

Page 32: GUI Programming with MacRuby

Why?

Page 33: GUI Programming with MacRuby

Why

MacRuby

• You already know Ruby

• Use existing Ruby gems

• Ruby 1.9.2

• No GIL

• Multi-threaded generational GC

• Fast!

Page 34: GUI Programming with MacRuby

Performance Benchmarks

1

2

3

4

5

6

7

8

app_answer app_tarai so_object vm1_ivar_set vm2_proc vm2_zsuper

Ruby 1.9 MacRuby

Page 35: GUI Programming with MacRuby

Average Selling Price

$2.00

$4.00

$6.00

$8.00

$10.00

$12.00

iPhone iPad Mac

$11.21

$4.19

$1.57

Page 36: GUI Programming with MacRuby

How?

Page 37: GUI Programming with MacRuby

macruby.com

How

MacRuby

Page 38: GUI Programming with MacRuby

rvm get headrvm install macruby

How

MacRuby

Page 39: GUI Programming with MacRuby
Page 40: GUI Programming with MacRuby

brew install llvmport install llvm

How

MacRuby

Page 41: GUI Programming with MacRuby
Page 42: GUI Programming with MacRuby

How

MacRubyFree with ADC account at developer.apple.com/tools/xcodeor $4.99 on the Mac App Store

Page 43: GUI Programming with MacRuby
Page 44: GUI Programming with MacRuby
Page 45: GUI Programming with MacRuby
Page 46: GUI Programming with MacRuby

sferikon Twitter, GitHub, Gmail, IRC, &c.