MacRuby 0.3发布,支持Interface Builder,和创建GUI用的HotCocoa-阿里云开发者社区

开发者社区> 大熊猫侯佩> 正文

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Devexpress VCL Build v2015 vol 15.1.2发布
2015年马上过半年了。终于第一个大版出来了。 What's New in 15.1.2 (VCL Product Line)   New Major Features in 15.1 What's New in VCL Products 15.
788 0
回顾 | 阿里云新品发布会第92期:云服务器ECS内存增强型实例re6全新发布(含 PPT 下载)
5 月 7 日,阿里云举办了第92期新品发布会,全新发布了云服务器ECS内存增强型实例re6。本文是此次会议的第一部分《云服务器ECS内存增强型实例re6全新发布》的视频内容回顾,并提供资料下载,希望能够对大家有所帮助~
474 0
phpstudy APACHE支持.htaccess以及 No input file specified解决方案
你的Apache安装文件夹conf里找到httpd.conf文件 索LoadModule rewrite_module modules/mod_rewrite.so 如果前面有注释符号#,请去掉。 搜索Options FollowSymLinks,然后将它下面的AllowOverride None 修改为AllowOverride All; 【1】 没想到遇见了 N
3520 0
PS网页设计教程XV——如何在Photoshop中创建一个充满活力的作品集的网页设计
作为编码者,美工基础是偏弱的。我们可以参考一些成熟的网页PS教程,提高自身的设计能力。套用一句话,“熟读唐诗三百首,不会作诗也会吟”。 本系列的教程来源于网上的PS教程,都是国外的,全英文的。本人尝试翻译这些优秀的教程。
1040 0
长文解析:作为容器底层技术的半壁江山, cgroup如何突破并发创建瓶颈?
io_uring 作为一种新型高性能异步编程框架,代表着 Linux 内核未来的方向,当前仍处于快速发展中。阿里云联合 InfoQ 发起《io_uring 介绍及应用实践》的技术公开课,围绕 OpenAnolis 龙蜥社区 Anolis OS 8 全方位解析高性能存储场景。
248 0
PS网页设计教程XXI——在Photoshop中创建一个光质感网页设计
作为编码者,美工基础是偏弱的。我们可以参考一些成熟的网页PS教程,提高自身的设计能力。套用一句话,“熟读唐诗三百首,不会作诗也会吟”。 本系列的教程来源于网上的PS教程,都是国外的,全英文的。本人尝试翻译这些优秀的教程。
748 0
K8S Ingress Controller 发布公告
在Kubernetes集群中,Ingress是授权入站连接到达集群服务的规则集合,为您提供七层负载均衡能力,您可以通过 Ingress 配置提供外部可访问的 URL、负载均衡、SSL、基于名称的虚拟主机,阿里云容器服务K8S Ingress Controller在完全兼容社区版本的基础上提供了更多的特性和优化。
8679 0
+关注
大熊猫侯佩
贪吃贪睡的大熊猫侯佩
689
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载