Ubuntu Linux でも wxHaskell が動作したのでメモしておきます。
wxWidgets ライブラリを apt-get コマンドでインストールしての cabal install wx はコンパイルに失敗。 WxHaskell/Building を参考にソースからインストールしました。
- wxWidgets のインストール。(Current Stable Release: 2.8.11 wxGTK)
> wget http://prdownloads.sourceforge.net/wxwindows/wxGTK-2.8.11.tar.gz > tar zxf wxGTK-2.8.11.tar.gz > cd wxGTK-2.8.11 > mkdir mybuild > cd mybuild > ../configure --enable-unicode > make > sudo make install > cd contrib/src > make > sudo make install
- wxWidgets のテスト
> cd ../../samples/controls > make # controls が作成されるので実行してみる。 > ./controls
- wxHaskell のビルド
> cabal update > cabal install wx
これで wxHaskell がインストールされました。
- ghc -package wx -o test test.hs - UTF8 module Main where import Graphics.UI.WX import Graphics.UI.WXCore main :: IO () main = start gui gui :: IO () gui = do form <- frame [text := "コントロール"] p <- panel form [] textlog <- textCtrl p [enabled := True, wrap := WrapNone] textCtrlMakeLogActiveTarget textlog logMessage "ログの記録を開始します。" ok <- button p [text := "OK", on command := appendText textlog "OKボタンが押されました。\n"] quit <- button p [text := "終了", on command := close form] let rlabels = ["第一", "第二", "第三"] radioBox <- radioBox p Horizontal rlabels [text := "横並び", on select ::= logSelect] disableButton <- button p [text := "無効", on command ::= onEnable radioBox] set form [layout := container p $ column 0 [( margin 10 $ row 7 [widget radioBox , widget disableButton ,widget ok, widget quit]) , hfill $ minsize (sz 400 150) $ widget textlog ] , clientSize := sz 400 200 ] return () where logSelect w = do i <- get w selection s <- get w (item i) logMessage ("selected index: " ++ show i ++ ": " ++ s) onEnable w b = do set w [enabled :~ not] enable <- get w enabled set b [text := (if enable then "無効" else "有効")]
Windows で動作したソースwxHaskell を使ってみる(2)がそのまま動作しました。