MacRuby 0.3发布,支持Interface Builder,和创建GUI用的HotCocoa
创建 发布 支持 GUI interface Builder 0.3
2023-09-14 08:56:51 时间
现在,MacRuby 0.3已经可以用了。
一个较大的变化是方法调度器,它现在完全基于Objective-C运行时。MacRuby现在使用 Objective-C运行时来实现Ruby的类语义,并调度纯Ruby方法。这是个非常重要的变化,因为这不仅简化了大量的内核实现,还让两个世界之间的界限更加清晰。
[..]
在纯Ruby的方面,修复了很多bug,我们现在可以运行一些RubyGems命令,还可以安装简单的gem。但不要指望MacRuby能运行Rails!
MacRuby现在支持用Cocoa来创建GUI—— 实际上创建GUI有两种方法。一种是使用和Apples 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_accessor、attr_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程序是什么样子的呢?这里有一个简短的示例,用来列出所有加载的类及其父类的表格。这段代码建立了一个GUI——请把代码复制到HotCocoa创建的程序框架中的lib/application.rb文件中:
查看原文:MacRuby 0.3 Release Brings Interface Builder Support, HotCocoa for GUI Building
Ant Design Pro 关闭mock数据 改成使用服务器API Ant Design Pro中默认是使用了mock数据的,由于在做项目之前没有学习过react dva redux umi这些基础组成知识,对我这个新手来说确实比较辣手. 首先修改config目录下config.
一个较大的变化是方法调度器,它现在完全基于Objective-C运行时。MacRuby现在使用 Objective-C运行时来实现Ruby的类语义,并调度纯Ruby方法。这是个非常重要的变化,因为这不仅简化了大量的内核实现,还让两个世界之间的界限更加清晰。
[..]
在纯Ruby的方面,修复了很多bug,我们现在可以运行一些RubyGems命令,还可以安装简单的gem。但不要指望MacRuby能运行Rails!
MacRuby现在支持用Cocoa来创建GUI—— 实际上创建GUI有两种方法。一种是使用和Apples 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_accessor、attr_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 startRake文件负责程序运行的所有细节——要运行它,执行:
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
macrake要了解关于MacRuby的更多信息,请关注InfoQ对Laurent Sansonetti的访谈。
查看原文:MacRuby 0.3 Release Brings Interface Builder Support, HotCocoa for GUI Building
Ant Design Pro 关闭mock数据 改成使用服务器API Ant Design Pro中默认是使用了mock数据的,由于在做项目之前没有学习过react dva redux umi这些基础组成知识,对我这个新手来说确实比较辣手. 首先修改config目录下config.
相关文章
- mysql创建数据表及约束
- 简单的WebService创建+发布Tomcat(java WebService)「建议收藏」
- 只会用 Spring Boot 创建微服务?那你就 OUT 了,还有这 4 种替代方案!
- 【Flutter】Flutter 拍照示例 ( 创建应用 | 安装 image_picker 插件 )
- 如何在MySQL中创建数据库(在mysql中创建数据库)
- 深入浅出:Linux系统中创建逻辑分区(linux创建逻辑分区)
- 如何使用Oracle创建游标(oracle创建游标)
- 开启创新之门:Linux 的创造力(linux 创建)
- MySQL中的new语句创建新行数据的方法(mysql中new语句)
- MySQL教程如何在数据库中创建用户(mysql下创建用户)
- linuxLVM快照创建详细步骤(使用PE完成)
- C++创建桌面快捷方式开始菜单的实现代码