What have you found for these years?

2007-07-22

Ruby GUI

[begin edited2]
夠了,不要再修改了,後續請看 telnet://ptt.cc 的 Ruby 板或是:
http://godfat.tw/viewtopic.php?p=1779#1779
(我電腦關機或沒使用網路時連不上)
[end edited2]

[begin edited]

作者 godfat (godfat 真常) 看板 Ruby
標題 Re: [心得] GUI
時間 Sun Jul 22 18:13:32 2007
───────────────────────────────────────

說是這樣說,不過真正開始測試的時候,我發覺﹍

1. wxRuby
實在有點難用﹍有一堆不該有的參數要傳來傳去﹍放棄

2. FXRuby
mac 上其實是可以用啦﹍只是需要 X11, 不能用 Aqua
結果就是﹍對 user 來說很難用,放棄

3. QtRuby
結果還是得回到 QtRuby...
cmake .
make
sudo make install

測試了一下,正常可用 Qt4
不過市面上的文件好像以 Qt3 為多就是了

嘖,沒有 port install qtruby 真的很可惜
這樣以後要升級或是反安裝就比較麻煩了
不知道當初安裝的 source 是不是要留下來以便反安裝作業

--
--
※ 發信站: 批踢踢實業坊(ptt.cc)

[end edited]

關於 computer science 這個領域,除了程式語言(programming language)與
物件導向(object-oriented)外,再下一個興趣大概就是使用者圖形介面了吧(GUI).
所以我一直想找個自己喜歡的 toolkit 來用,在 C++ 中無非就是 Qt4 了,
不過在 Ruby 中,似乎沒有一個比較完美的 solution, 一個個來看。

在這之前,我先說明一下我用過的 C/C++/Java GUI toolkit.

1. MFC, 學校在教如何剪貼 MFC code, 我是叛逆份子,所以一個字都沒聽進去。
不用別人說很糟,光看第一眼就覺得很糟,更何況他又是被罵得半死的東西。

2. wxWidgets, 這算是我第一個使用的 GUI toolkit, 基本上,我認為這真的
是個很強大的東西,沒話說。不過最令人嘖嘖稱奇的應該是他跨平台的能力,如果我
沒記錯的話,他跨的平台好像比 Java 還多!不過因為風格問題,我不是很喜歡。
基本上,我認為 wxWidgets 的風格有些過於老舊,寫起來感覺不是很好。
Ruby binding 叫 wxRuby.

3. Qt, 我想正是因為 wxWidgets 跟我不太合,所以才繼續找下去。不料找到 Qt4,
我認為這應該是接近完美的 solution 了。有人說,Qt 至少領先其他人十年,也許
這麼講並不為過。最令人詬病的,大概就是你只能從 GPL 或超昂貴的商業 solution
兩種 license 中選一種。其實我不覺得這對我來說會是很大的困擾,open source
沒什麼不好,雖然 GPL 是有點太激進了些。Ruby binding 叫 QtRuby.

4. GTK+, 這個其實我不只沒用過,甚至連看都沒看過。理由很簡單,就是我不想用
C 想用 C++. 當然我知道 GTK+ 評價不錯,也有 Glade 和 win32 的 port,
只是似乎沒有足夠的推力讓我去嘗嘗看。

5. Swing, 會碰這個完全只是因為需要用 Java. 我個人是覺得他跟 wxWidgets
各有千秋,但同樣遠遜於 Qt. 不過也許這樣比較並不太公平,Java 天生就是沒 C++ 強。
所以 Qt 遠勝可能是理所當然的?Ruby 要用可以使用 JRuby.

6. Ultimate++, 其實這個我沒用過,不過看起來是不錯。沒去試主要有三個原因,
一,他綁 IDE, 這個我很不爽。二,他的命名法我不能接受。三,Qt 很好。XD
其實你去看他的網站,他有一個範例程式,並用各種 toolkit 來實做。我個人認為
這個動作滿不誠懇的,他有故意挑其他人弱點的嫌疑。而且各 toolkit 做到的東西
明顯有差異,這樣比並不公平。不誠懇,不喜歡。

7. Notus/VCF, 這兩樣 toolkit 都有一個很大的特色,就是 template
template and template... 基本上用 C++ 當然是要用 template 啊!!
不過知道這兩樣東西時我已經有一段時間沒碰 GUI 了,所以並沒有仔細調查這兩個
toolkit 感覺如何。但我想如果沒辦法接受 Qt 的話,這兩套 toolkit 值得一看。

8. .NET/mono, 這個其實我只用過 Visual C++ 2005 Express 稍微拉了一下
介面,感覺還不錯,但直接寫起程式不知道是什麼感覺。Ruby 要用的話,或許可以試試
IronRuby, 不過我個人對 .NET 沒什麼好感,就不去試了。

9. VCL, Borland 的招牌,我用過 Turbo C++ Explorer, 感覺是﹍基本上
我覺得沒有 .NET 好的感覺。而且要跨平台恐怕有點難,所以就不考慮了。更何況
這些好像也不算 open source 的吧?

10. FOX, 這個是我最沒聽過的 toolkit, 是去找 Ruby GUI 時才發現他的存在,
所以我一點都不知道他的狀況究竟如何。評價似乎是不錯,而且好像很年輕。只是呢﹍
FXRuby 似乎沒有 mac 的 port, 而我也已經有點懶得用 C++ 寫 GUI 了,
所以還是暫時跳過吧﹍。基本上沒有跨 win32/x11/aqua 三大系統的 toolkit,
我就沒什麼興趣試了。

本來只想隨意講一點的,不知不覺就扯多了。接下來看 Ruby 能使用的東西:

1. tk, 沒記錯的話,這個被 ruby 內建起來了。不過似乎是用過的都說爛,
所以還是不要多考慮吧?

2. FXRuby, FOX 的 ruby binding, 評價相當不錯,唯一的缺點也許是
還沒有 mac 版的樣子?我想未來應該值得繼續關切,雖然我還沒看過他程式
寫起來像什麼樣子。要試用的話,除了需要安裝 FOX, FXRuby 就:
gem install fxruby

3. wxRuby, wxWidgets 的 ruby binding, 我是看到有人批評寫起來像在寫
C++, 這應該算是一個滿大的缺點,不過看在他功能強大,跨平台能力驚人的份上,
還是值得試試看吧。要試用的話,除了需要安裝 wxWidgets, wxRuby 就:
gem install wxruby

4. QtRuby, Qt3 與 Qt4 的 ruby binding, 基本上評價仍然是相當地好,
唯一的兩大缺點,第一個是沒有 gem, 不能 gem install qtruby, 第二個是
在 windows 上要安裝似乎非常困難,沒有簡單的方法。但我相信假以時日,這兩個
問題都能夠解決(嗚嗚)。

5. Swing, 要灌 JRuby, 我的 macports 似乎找不到 jruby, 我又不想從
sun 的網站抓下來灌,再說,我也沒喜歡過 swing 過,所以就懶得試了。

6. Mono, 我有灌 mono, 不過不是很清楚能不能用 IronRuby 之類的東西存取,
之所以寫在這,算是做個筆記,說不定可以使用這樣。

7. GTK+, 我不是很確定有沒有 ruby binding, 但我想應該會有才是。不試的理由
同上,所以也只是暫時筆記。

Ruby 的 GUI 比較有名的大概就這幾個了吧。其實我是一直想試 QtRuby 的,
雖然 windows 上似乎不太容易使用,但相信假以時日一定可以的。而讓我卻步最大的
問題點在於,不能用 gem 安裝,macports 也找不到 QtRuby. 也就是說,
我得親自 ./configure make make install, 但我不喜歡這樣,管理不便。
所以我決定還是暫時放下他,等他有 gem 或是 port 時再說吧!

FXRuby 因為沒用過 FOX, 所以也還是放著再說。更何況據說是沒有 mac 版,
那我試屁啊﹍。所以左右思量之下,我還是決定先試 wxRuby! 安裝方便,
強大的跨平台能力,雖然是 C++ style 而非 the ruby way, 但對我來說
C++ style 也不是那麼地令人排斥,也許有點詭異,但我覺得也可以用自己想要的
方式重新 wrap 一次,對 ruby 來說那是如此簡單的事!

so have a try with wxRuby!

this is the hello world:

require 'rubygems'
require 'wx'

class HelloWorld < Wx::App
include Wx
def on_init
helloframe = Frame.new nil, -1, "Hello World"
StaticText.new helloframe, -1, "Hello World"
helloframe.show
end
end

HelloWorld.new.main_loop


sudo port install wxwidgets
sudo gem install wxruby

4 retries:

lukhnos said...

快試試 Mac 吧,有 RubyCocoa 。:)

Plumm said...

沒有的正好是你發揮長才的機會呀..
所以 godfat 你可以...

1. port FxRuby to mac
2. 弄出 Windows 上容易用的 QtRuby

你之前不是才有一篇有在說, 東西都弄得好好的, 沒什咩可以做的了嘛 :QQ

godfat 真常 said...

> 快試試 Mac 吧,有 RubyCocoa 。:)

試了一下,功能相當強大啊。
不過感覺用起來似乎沒有很方便,
有不少細節需要自己去處理的樣子。

> 沒有的正好是你發揮長才的機會呀..

可以做的事情太多了 XD
確定有人會做的,就慢慢等他吧。

godfat 真常 said...

我玩 ruby gui 又怎樣了??
是不行喔?莫名其妙
為什麼總是講些帶刺的話

Post a Comment

All texts are licensed under CC Attribution 3.0