http://www.macruby.org/
から MacRubyをダウンロードして遊んでみた。
% macruby -v
MacRuby 0.7.1 (ruby 1.9.2) [universal-darwin10.0, x86_64]
サンプルをデスクトップにコピー。
% cp /Developer/Examples/Ruby/MacRuby/Scripts/hello_world.rb ~/Desktop/sample_hello_world.rb
このサンプルと
http://macruby.labs.oreilly.com/ch01.html
に掲載されてる hello_world.rb を見比べつつ クラスを作ってみた。
framework 'AppKit'
module Hello3
module MyWindow
def window(ary, title, obj)
@w = NSWindow.alloc.initWithContentRect(ary,
styleMask:NSTitledWindowMask|NSClosableWindowMask|NSMiniaturizableWindowMask|NSResizableWindowMask,
backing:NSBackingStoreBuffered,
defer:false)
@w.level = 3
@w.title = title
@w.delegate = obj
return @w
end
end
class MyButton
attr_reader :b
def initialize(ary, title, obj)
@b = NSButton.alloc.initWithFrame(ary)
@b.title = title
@b.bezelStyle = 4
@b.target = obj
end
end
class Myapp
include MyWindow
attr_reader :app
def initialize
@app = NSApplication.sharedApplication
@app.delegate = self
end
def windowWillClose(notification)
puts "Bye!"
exit
end
def sayHello(sender)
puts "Hello again, World!"
end
def sayBye(sender)
puts "bye"
exit
end
def setup
# button
b1 = MyButton.new([150, 30, 100, 50], "Hello World!", @app.delegate).b
b1.action = 'sayHello:'
b2 = MyButton.new([30, 30, 100, 50], "Stop", @app.delegate).b
b2.action = 'sayBye:'
# window
w = window([200, 300, 300, 100], "HelloWorld.app", @app.delegate)
w.contentView.addSubview(b1)
w.contentView.addSubview(b2)
# display
w.display
w.orderFrontRegardless
return @app
end
end
def self.run
Myapp.new.setup.run
end
end
Hello3.run
実行
% macruby hello3.rb
Interface Builder.app 起動しなくてすむ。すごい!。快適。
[2010-10-28]
@b1, @b2, @w を b1, b2, w に修正。
0 件のコメント:
コメントを投稿