该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间:2008-12-17
最后修改:2008-12-17
Shoes是Ruby的跨平台GUI应用工具,最近发布了新版本,它是一个非常有趣的Ruby GUI客户端,下面是一些特性介绍:
1. 跨平台,目前支持windows/linux/mac os 2. 非常小巧,利用ruby语言的特性和它基于closure builder语法,你可以用非常非常少的代码就能创建出一个客户端应用,一行代码构建alert button: Shoes.app { button("Click me!") { alert("Good job.") } } 你猜猜看这样一个走动的时钟需要多少代码? 50行Ruby代码就可以搞定: 3. 自带编译和打包程序,你可以将程序打包成可执行文件然后发布(通常只有几十K),在没有安装Shoes的机器上执行这个文件,会自动下载Shoes,如果你的应用需要用到其他ruby gem,也会自动下载安装: Shoes.setup do gem "redcloth" gem "metaid" end 4. 虽然Shoes是一个客户端程序,但是他用的语法参考了很多HTML/CSS,比如image/para/background等等,对于熟悉web开发的程序员来说非常容易上手 下面简单介绍一下安装: 从下载页面:http://shoooes.net/downloads/ 下载适合你操作系统的安装程序,如果你不需要视频支持,可以试试看w/o video support的版本,在windows下面只有3M多。 安装很方便,以windows为例,它会解压到指定目录,这个目录下面包括一个ruby解析器(也就是说你不需要预先安装ruby和担心版本冲突),另外还有一些例子(samples),运行后用open app选项打开这些例子,你会对Shoes可以做哪些应用有一个直观了解。而Read the manual选项可以查看它内置的帮助,是一个很好的上手文档。值得提一下的是这个Read the manual也是用Shoes自己本身作一个应用,非常酷,你可以从github找到源代码: http://github.com/why/shoes/tree/master http://the-shoebox.org/ (鞋柜)是Shoes应用的一个集中展示地,你可以从这里下载到更多应用源码。 延伸阅读:Ruby: GUI编程的利器 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-12-17
貌似不支持中文。
在界面上把原来的英文改成中文,就一塌糊涂了。 |
|
返回顶楼 | |
发表时间:2008-12-17
好东西,主页图片有意思。
国际化,可以用别的嘛。 |
|
返回顶楼 | |
发表时间:2008-12-17
中文不能显示估计是编码的问题,存成utf-8就行了
暂时不知道为啥不认中文字体是真的,无论是否把字体拷到他的fonts文件夹都没管用 [img]/upload/attachment/60723/6725a3a9-bea2-38e4-9114-3a4b0c77b65c.jpg" alt="" width="317" height="114[/img] |
|
返回顶楼 | |
发表时间:2008-12-18
控件多点就很爽了
|
|
返回顶楼 | |
发表时间:2008-12-18
还不是很系统,关注中
用js写了一段ext widgets后,对动态语言的看法完全变了,对GWT之类的东西也不那么感兴趣了,但是js毕竟不是一个真正的面向对象的语言.Ruby的优势应该在GUI这个领域能发挥出来,如果有一个好的GUI的库的话. |
|
返回顶楼 | |
发表时间:2008-12-18
最后修改:2008-12-18
shoes不错,原先侧重图形处理和游戏制作,2.0多了几个表单控件.
将应用程序当成游戏界面一样做,是个趋势. 中文支持,设置:font参数 http://help.shoooes.net/Rules.html 引用 Shoes.app do para "てすと (te-su-to)", :font => "AppleGothic, Arial" end |
|
返回顶楼 | |
发表时间:2008-12-18
最后修改:2008-12-18
[url]http://help.shoooes.net/Rules.html [/url]
这篇文章提到Shoes Tricky Blocks,它对self和context的处理很有意思. shoes新加了Widget的功能,它的文档还没提到,这样用: # 自定义FormRow控件 class FormRow < Widget attr_accessor :label, :control def initialize(opts = {}) stack :width => 100 do @label = para(opts[:label] || '') end @control = edit_line(:text => opts[:value] || '') end end Shoes.app do stack do # 现在可以使用 form_row方法了(因为,shoes在Widget的inherited方法里,将我们的类名转化为一个方法名,注册到shoes里去了) @name_row = form_row :label => 'name:', :value => 'some value' @age_row = form_row :label => 'age' end @name_row.control.change do @age_row.control.text = @name_row.control.text + " ==> 29" end end 传统GUI开发工具,往往内置了很多控件,允许我们直接拖放控件、编辑属性。但是,有时候,每当我们拖一个新控件,都会首先设置它的某些属性成一定值,以使它们在系统内达到一致。这种在可视化环境里进行的重复操作,仍然是一种重复,虽然自定义控件、录制宏可以封装这种重复,但一般成本较高,维护性较差。 HTML的问题是,只能组合各个现有标签,却不能自定义新标签完成封装(服务器端方案不算)。 shoes的widget会很大程度解决这些问题,借助block进行添充,借助arguments参数进行调整,以DSL进行界面描述很有前途。 |
|
返回顶楼 | |
发表时间:2008-12-20
手册写得很酷呀,内容在static/manual.txt,语法和wiki差不多,这样就能显示出界面,并且里面的示例代码还能直接运行,太牛了!
有谁知道manual的源码在哪儿呀 |
|
返回顶楼 | |
发表时间:2008-12-20
找到manual源代码了,lib/shoes/help.rb
|
|
返回顶楼 | |