Canvasを使いたい。
ということでlablgtkのソースに含まれるexaplesディレクトリを調べてみると、あった!
$ cd lablgtk-2.18.0/examples/canvas
$ lscanvas-arrowhead.ml canvas-features.ml canvas-primitives.ml flower.png
canvas-curve.ml canvas-fifteen.ml canvas-richtext.ml toroid.png
とりあえず、canvas-curve.mlを試してみる。
$ lablgtk2 canvas-curve.mlFile "canvas-curve.ml", line 21, characters 4-19:
Error: Unbound module GnoCanvas
GnoCanvasというモジュールが必要なようだ。
opamで探してみる。
$ opam search GnoCanvas[ERROR] No packages found.
'opam search GnoCanvas' failed.
ない...
それでは、canvasだとどうかな?
$ opam search canvasAvailable packages for system:
conf-gnomecanvas -- Virtual package relying on a Gnomecanvas system installation.
vg -- Declarative 2D vector graphics for OCaml
あった!
conf-gnomecanvas をインストールすれば良さそうだ。
$ opam install conf-gnomecanvas〜略〜
[ERROR] The compilation of conf-gnomecanvas.2 failed.
Removing conf-gnomecanvas.2.
〜略〜
===== ERROR while installing conf-gnomecanvas.2 =====
# opam-version 1.1.0
# os linux
# command pkg-config libgnomecanvas-2.0
〜略〜
とエラーが出た。
メッセージを良く見ると、libgnomecanvas-2.0が必要なのかな?
$ dpkg --list | grep libgnomeii libgnome-keyring-common 3.4.1-1 all GNOME keyring services library - data files
ii libgnome-keyring0:i386 3.4.1-1 i386 GNOME keyring services library
確かにそんなライブラリはインストールしていない。
$ apt-cache search libgnomecanvas2libgnomecanvas2-common - powerful object-oriented display engine - common files
libgnomecanvas2-dev - powerful object-oriented display engine - development files
libgnomecanvas2-doc - powerful object-oriented display engine - documentation files
libgnomecanvas2-0 - パワフルなオブジェクト指向表示エンジン - ランタイムファイル
libgnomecanvas2-dbg - パワフルなオブジェクト指向ディスプレイエンジン - デバッグシンボル
libgnomecanvasmm-2.6-1c2a - libgnomecanvas2 の C++ 版ラッパー (共有ライブラリ)
libgnomecanvasmm-2.6-dev - libgnomecanvas2 の C++ 版ラッパー (開発用ファイル)
libgnomecanvasmm-2.6-doc - libgnomecanvas2 の C++ 版ラッパー (ドキュメンテーション)
libgnomecanvas2-devをインストールする。
$ sudo apt-get install libgnomecanvas2-dev再度、conf-gnomecanvasをインストールする。
$ opam install conf-gnomecanvas今度は成功だ。
試してみる。
$ lablgtk2 canvas-curve.mlzsh: command not found: lablgtk2
おや?lablgtk2コマンドがなくなった。
もう一回、lablgtkをインストールしよう。
$ opam install lablgtk2インストール完了後、再度実行だ。
$ lablgtk2 canvas-curve.mlFile "canvas-curve.ml", line 1:
Error: Reference to undefined global `GnoCanvas'
うーむ。GnoCanvasが見えない(のか無いようだ)。
探してみる。
$ cd .opam
$ find ./ -name 'gno*'./system/lib/lablgtk2/gnomeCanvas.ml
./system/lib/lablgtk2/gnoCanvas.mli
./system/lib/lablgtk2/gnoCanvas.cmx
./system/lib/lablgtk2/gnoDruid.mli
./system/lib/lablgtk2/gnoCanvas.cmi
./system/lib/lablgtk2/gnoCanvas.ml
./system/lib/lablgtk2/gnomeCanvas.cmi
./system/lib/lablgtk2/gnomeCanvas.cmx
ちゃんとファイルはあるなぁ。ライブラリパスの設定がまずいのか?
どう設定するのだろう。
lablgtk2のソースを見てみると、
$ lv `which lablgtk2`〜略〜
echo "Usage: lablgtk2 <options> <ocaml options> [script-file]"
echo " -thread use the threaded version of the toplevel"
echo " -all load all extensions" ←◆これ
echo " -noinit do not initialize gtk"
echo " -localdir use libraries in the same directory (before install)"
echo " -verbose show actions executed"
おっと。-all が使えそうだ。
$ lablgtk2 -all canvas-curve.mlやっと、動いたー!
Awesomeというタイル型のウィンドウマネージャを使っているので、余白が多いのかも。
他のウィンドウマネージャを使えば、相応のウィンドウサイズで表示されるはず。