MacRuby 0.3发布,支持Interface Builder,和创建GUI用的HotCocoa

简介:
作者 Werner Schuster ,译者 贾晓楠 发布于 2008年9月24日 |
现在, MacRuby 0.3已经可以用了。
一个较大的变化是方法调度器,它现在完全基于Objective-C运行时。MacRuby现在使用 Objective-C运行时来实现Ruby的类语义,并调度纯Ruby方法。这是个非常重要的变化,因为这不仅简化了大量的内核实现,还让两个世界之间的界限更加清晰。
 [..]
在纯Ruby的方面,修复了很多bug,我们现在可以运行一些RubyGems命令,还可以安装简单的gem。但不要指望MacRuby能运行Rails!
MacRuby现在支持用 Cocoa来创建 GUI—— 实际上创建GUI有两种方法。一种是使用和Apple's XCode相配套的Interface Builder(IB)。用IB创建的GUI可以通过action和outlet(GUI元件收发消息用的)来连接到Ruby类。MacRuby提供了一 个用Ruby写的工具来创建必要的元数据,用来映射到Ruby代码构造器,例如从accessor和method映射到action和outlet。

rb_nibtool是用Ruby写的,还使用了 Ruby 1.9的 Ripper库。Ripper使用Ruby源,让它能被Ruby代码访问——要么作为Lexer标记流,要么作为s表达式(相当于ParseTree,不过Ruby 1.9里还没有)。rb_nibtool根据Ruby源文件为.nib文件提供类名; attr_accessorattr_writer和其它一些调用被解释为outlet,一个标识符跟一个ib_action定义为一个action。最终,这些收集到的信息汇入一个.nib 文件,把GUI定义和Ruby代码连接起来。

顺便提一句:使用MacRuby和Interface Builder创建GUI是在OS X上的Ruby的一个选择——而在Windows上, Ruby In Steel IDE能帮助Visual Studio创建GUI,要通过Ruby Connector使用IronRuby或MRI。

另一种创建GUI的方法是 HotCocoa,它随MacRuby一起提供,可以使用创建器的理念来创建GUI,类似于一些其它的Ruby工具,比如 Ruby Shoes,以及其它Ruby GUI库。 大致了解一下HotCocoa的实现,看看 创建方法名是如何映射到Cocoa GUI控件上的。到现在为止,关于HotCocoa的文档几乎没有,因此唯一能参考的就是随MacRuby一起提供的HotCocoa源码和例程。

和其它Ruby工具包一样,HotCocoa附带了一个用来建立程序框架的工具:
hotcocoa classlist 
该命令用来创建一个新程序,连同必须的库和设置。
HotCocoa程序是什么样子的呢?这里有一个简短的示例,用来列出所有加载的类及其父类的表格。这段代码建立了一个GUI——请把代码复制到HotCocoa创建的程序框架中的 lib/application.rb文件中:
def start
 application :name => "Classlist" do |app|
 app.delegate = self
 window :frame => [100, 100, 500, 500], :title => "Classlist" do |win|
# Add a button to - clicking shows the data in the table
win << button(:title => "Show classes", :bezel => :regular_square).on_action {
klasses = []
ObjectSpace::each_object(Class){|x|
 klasses << {:klass => x.to_s, :ancestors => x.ancestors.join(',')}
}
@table.data = klasses
 }
 # create the table
@table = table_view(
 :columns => [
column(:id => :klass, :text => "Class"),
 column(:id => :ancestors, :text => "Ancestors")
] )
# put the table inside a scroll view
win << scroll_view(:layout => {:expand => [:width, :height]}) do |scroll|
scroll << @table
end
win.will_close { exit }
end
end
end
Rake文件负责程序运行的所有细节——要运行它,执行:
macrake  
要了解关于MacRuby的更多信息,请关注 InfoQ对Laurent Sansonetti的访谈。 

查看原文MacRuby 0.3 Release Brings Interface Builder Support, HotCocoa for GUI Building
相关文章
|
6月前
|
JavaScript 开发工具 Windows
扩展的方法:es6 安装模块builder
扩展的方法:es6 安装模块builder
23 0
|
4月前
|
数据可视化 iOS开发
iOS 开发,什么是 Interface Builder(IB)?如何使用 IB 构建用户界面?
iOS 开发,什么是 Interface Builder(IB)?如何使用 IB 构建用户界面?
40 4
|
5月前
builder 模式
builder 模式
18 0
|
7月前
|
存储 Java API
给 SAP BTP 创建的 Java 应用添加 Custom Event Handler 支持创建功能
给 SAP BTP 创建的 Java 应用添加 Custom Event Handler 支持创建功能
60 0
Builder模式介绍
Builder模式是一步一步创建一个复杂对象的创建型模式,它允许用户在不知道内部构建细节的情况下,可以更精确地控制对象的构造流程。该模式是为了将构建复杂对象的过程和它的部件解耦,使得构建过程和部件的表示隔离开来。
|
Web App开发 JavaScript 应用服务中间件
C++Builder中开发Activex
1.创建自己的ActiveX控件 C++Buider开发ActiveX的功能非常强,但是这方面的资料却比较少,本人经过摸索终于搞定了创建Web方式Activex的基本方法 ⑴打开BCB6,新建一个Activex工程,选择时注意选择ActiveX标签页的Active Form ⑵在弹出...
1103 0
|
Java
Builder模式
在Java编程中,常常需要为一个Bean构建成员变量或者构建参数,常用的方法有使用构造函数、使用JavaBean的set()方法,但是这两个方案或多或少都存在一定的缺点,于是今天的主角builder模式出场了,它解决了这种典型应用场景的问题,采用简洁明了的使用方式,灵活多变的链式调用,使得多个参数的Bean的构建变得十分简洁。
108 0
|
Android开发 数据格式 XML
Android开发教程 - 使用Data Binding(八)使用自定义Interface
本系列目录 使用Data Binding(一)介绍 使用Data Binding(二)集成与配置 使用Data Binding(三)在Activity中的使用 使用Data Binding(四)在Fragment中的使用 ...
1116 0