论坛首页 编程语言技术论坛

Shoes - 构建Ruby客户端程序的小工具

浏览 15497 次
该帖已经被评为良好帖
作者 正文
   发表时间: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编程的利器
  • 大小: 13.9 KB
  • 大小: 6.5 KB
  • 大小: 21.7 KB
   发表时间:2008-12-17  
貌似不支持中文。
在界面上把原来的英文改成中文,就一塌糊涂了。
0 请登录后投票
   发表时间:2008-12-17  
好东西,主页图片有意思。
国际化,可以用别的嘛。
0 请登录后投票
   发表时间:2008-12-17  
中文不能显示估计是编码的问题,存成utf-8就行了
暂时不知道为啥不认中文字体是真的,无论是否把字体拷到他的fonts文件夹都没管用

[img]/upload/attachment/60723/6725a3a9-bea2-38e4-9114-3a4b0c77b65c.jpg" alt="" width="317" height="114[/img]
  • 大小: 9.9 KB
0 请登录后投票
   发表时间:2008-12-18  
控件多点就很爽了
0 请登录后投票
   发表时间:2008-12-18  
还不是很系统,关注中
用js写了一段ext widgets后,对动态语言的看法完全变了,对GWT之类的东西也不那么感兴趣了,但是js毕竟不是一个真正的面向对象的语言.Ruby的优势应该在GUI这个领域能发挥出来,如果有一个好的GUI的库的话.
0 请登录后投票
   发表时间: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

0 请登录后投票
   发表时间: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进行界面描述很有前途。

0 请登录后投票
   发表时间:2008-12-20  
手册写得很酷呀,内容在static/manual.txt,语法和wiki差不多,这样就能显示出界面,并且里面的示例代码还能直接运行,太牛了!
有谁知道manual的源码在哪儿呀
0 请登录后投票
   发表时间:2008-12-20  
找到manual源代码了,lib/shoes/help.rb
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics