「Real World Haskell」は Gtk2hs を紹介していますが wxHaskell は移植性が高く、ネイティブAPIを呼んでいますから綺麗で、パーツも豊富そうです。
wxWidgets については「wxWidgets でクロスプラットフォーム GUIアプリを作ろう」に詳しく記述されています。
Ruby は "gem install wxRuby" 一発でインストールが可能で、
C:\ruby-1.8\lib\ruby\gems\1.8\gems\wxruby-2.0.1-x86-mswin32-60\samples に豊富なサンプルもあります。
しかし、Windows でのwxHaskell はとても大変です。
WxHaskell/Download のバイナリは ghc 6.10.4 までしかありませんし、ghc 6.10.4はエラーが出ますので、そのままで動くのは ghc 6.10.3 までです。
- まずは wxWidgets をコンパイルするため「MinGW + MSYSのインストール方法」を参考にして MinGW + MSYS の環境を構築しました。(ghc 6.12.X は MinGW が梱包されているようです。
- MSYS インストールの途中で黒い画面になる部分ではエラーが発生しましたが、気にしなくても大丈夫のようです。
- wx-config が必要なので、ダウンロードしてパスの通ったディレクトリに入れます。私は MSYS の bin に入れました。
- 作業は スタート→MinGW→MSYS→MSYS のコンソールを起動し、コンソールの中で行います。
$ wx-config --help wx-config [--prefix[=DIR]] [--exec-prefix[=DIR]] [--release] [--version-full] (略)
- Browse wxWidgets Files on SourceForge.net : こちらから、wxMSW-2.8.11.zip をダウンロードします。wxMSW-2.8.11-Setup.exe もありますが自己解凍して希望の場所に設置するだけですので wxMSW-2.8.11.zip を C:\msys\1.0\home\username に解凍しました。
- コンパイル。
> cd wxMSW-2.8.11/build/msw > mingw32-make -f makefile.gcc BUILD=release MONOLITHIC=1 SHARED=1 UNICODE=1
(http://haskell.org/haskellwiki/WxHaskell/Install)
WXWIN・・・C:\msys\1.0\home\username\wxMSW-2.8.11 WXCFG・・・gcc_dll\mswu
- エラー
cabal install wx (snip) Linking C:\DOCUME~1\LOCALS~1\Temp\wxcore-0.12.1.63756\wxcore-0.12.1.6\dist\setup\setup.exe ... 'wxdirect' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。
- wxdirect のコンパイルに成功しているのに、内部コマンドまたは外部コマンドとして認識されません。C:\Users\userName\AppData\Roaming\cabal\bin を Path に追加します。
- 最後に書き込みに失敗・・・管理者権限で MSYS コンソールを起動してOK。(管理者権限で MSYS コンソールを起動し、その中で cabal install wx を実行するとエラーは発生しませんでした。別マシンにインストール時)
$ cabal install wx Resolving dependencies... [1 of 1] Compiling Main ( C:\Users\igata\AppData\Local\Temp\wxcore- 0.12.1.63744\wxcore-0.12.1.6\Setup.hs, C:\Users\igata\AppData\Local\Temp\wxcore- 0.12.1.63744\wxcore-0.12.1.6\dist\setup\Main.o ) (snip) [16 of 16] Compiling Graphics.UI.WX ( src\Graphics\UI\WX.hs, dist\build \Graphics\UI\WX.o ) Registering wx-0.12.1.6... Installing library in C:\Users\igata\AppData\Roaming\cabal\wx-0.12.1.6\ghc-6.12.3 Registering wx-0.12.1.6...
cd C:\ghc\wxhaskell\samples\wx ghc -optl-mwindows -package wx Grid.hs -o grid ./grid