2010/10/27

Install MacRuby

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 件のコメント: