Create  Edit  Diff  FrontPage  Index  Search  Changes  History  Source  RSS  wikifarm  Login

FrontPage

RubyでGUIのメモ

RubyでGUIを使うときのメモ書きです。

ちなみに、自分は普段はLinuxしか使いません。が、諸事情によりWindowsも使うようになってきたので、LinuxとWindowsの両方で動くGUIのコードを書く必要が生じてました。

ということで、そんな自分が選ぶRubyのGUIライブラリについてです。

条件

  • WindowsとLinuxの両方で同じコードが使える
  • WindowsはVC++
  • 拡張ライブラリのこともあるので、自分でビルドできる

Ruby/Gtk

Linuxでは常用してた。が、Windows(VC++)では、ほとんどまともにビルドできない。One-Click-InstallerのRuby&バイナリなら、さほど問題なく動作するが、そうすると拡張ライブラリをビルドするときにバージョンを合わせる必要が生じてしまう。

ということで、却下。

wxRuby

  • VisualStudio 2008 Express
  • ruby-1.8.7-p174
    • これは問題なくビルドできる
  • wxWidgets-2.8.10
    • これも大丈夫
  • wxruby-2.0.0
    • swigは1.3.37
    • 1.3.38以上だとwxrubyのビルドで困る
    • http://www.ruby-forum.com/topic/183224
    • Rubyのwin32.hでbindがマクロ定義されて、xxbindで衝突する
    • 最後にmt.exeを使ってMANIFESTを埋め込む

ビルド

  • VisualStudio 2008 Expressをインストール
  • MSYS
    • MSYS-1.0.11をexeからインストール
    • bison-2.4.1-1-msys-1.0.11-bin.tar.lzmaを解凍してインストール
    • c:/msys/1.0/binにPATHを通すとechoが被るので注意
      • PATHの通った場所に、byacc.batとsed.batを作成しておく
  • Ruby
    • win32でconfigure.bat、nmakeでビルド
  • wxWidget-2.8.10
    • comctl32.dllのバージョンが正しく取得できない
    • app.cppを書き換えて無理矢理通す
  • wxruby-2.0.1
    • swigは1.3.38以下
    • bindのマクロが悪さするので、swigwin-1.3.38/Lib/ruby/rubyhead.swgに#undef bindを追加
    • リンクが終わったらmt.exe -manifest wxruby2.so.manifest -outputresource:wxruby2.so;2を実行

おまけ

  • ruby/zlib
    • GnuWin32のzlibを拾ってきて、zconf.hのHAVE_UNISTD_Hのあたりを編集
    • その後、ruby/ext/zlibでruby extconf.rb --with-opt-dir=<GnuWin32>;nmake

wxWidgetsでのGTK版とWindows版の違い媚薬

  • Windowsでは、ImageList.newでサイズを指定する必要がある
  • Windowsでは、ListCtrlのVIRTUALで内容を変更したらrefreshする必要がある
  • Windowsでは、TreeCtrlでHIDE_ROOTを使うとボタン(ライン)が表示されない
  • Immobilien in Hamburg
Last modified:2011/05/24 22:49:24
Keyword(s):
References: