椿の日記

たぶんプログラムの話をします

wxHaskellでカスタムコントロールを作ってみた

作り方が分かると凄く簡単でした。

IOだの状態だの使いまくったためHaskellっぽくない気もするのですが、そこらへんの部分をカスタムコントロールで吸収しきれば幸せな人生が待ってる、と信じることにしたので作るのは苦行にはなりませんでした。

作ったのはヘックスのマップエディタに使うビューなんですが、(利用する側は)こんな感じのコードで画面にヘックスのセルを表示することができるようになります。

readCells :: FilePath -> IO (Array (Int,Int) [Bitmap ()])

main :: IO ()
main = do
    f <- frame []
    w <- hexWindow f []
    cs <- readCells "hoge.bmp"
    set w [cells := cs]

この辺の再利用性の高さには少し関心しますね。まあMVPとかMVVMとかの概念に相当する部分なので言語には依らないと思いますが…

肝心のビューそのものの作り方はそのうち纏めておこう