clg
Common Lisp(CMUCL) で GUI をしよう。
準備
clgは
SourceForgeからダウロードできます。
tar zxf clg-0.51.tar.gz
export CMUCLLIB=/usr/share/common-lisp/source/cmucl/lisp
./configure
cd cmucl
make
make test
以上で、サンプルが動きます。
さらに、(require 'gtk) で動くようにします。
gtk.system
;;;;;-*- lisp -*-
(in-package :common-lisp-user)
(setf (logical-pathname-translations "cl-gtk")
(quote (("obj;*.*.*" "/home/ancient/letter/lisp/clg-0.51/cmucl/*.*.*")
("**;*.*.*" "/home/ancient/letter/lisp/clg-0.51/**/*.*.*"))))
(make:defsystem
gtk
:depends-on (aserve ancient)
:source-pathname (translate-logical-pathname "cl-gtk:obj;")
:components ((:file "cl-gtk")
(:file "site"
:depends-on ("cl-gtk"))))
site.lisp
(in-package :gtk)
;;Localeを設定
(gforeign:define-foreign set-locale () gforeign:none)
(set-locale)
;;日本語を表示できるように
(rc-parse-string "
style \"default\"
{
fontset = \"-misc-fixed-medium-r-normal--14-*-*-*\"
}
widget_class \"*\" style \"default\"
")
上記の二つのファイルを clg-0.51/cmucl に作成し、
make:*central-registry* のディレクトリうちの一つに、
gtk.system のシンボリックリンクをはります。
Hello World
しきたりに従い、Hello World です。
hello.lisp
(require 'gtk)
(setf window (gtk:window-new :toplevel))
(setf label (gtk:label-new "Hello World(こんにちは)"))
(gtk:container-add window label)
(gtk:widget-show-all window)
もう一つの Hello World
(require 'gtk)
(setf window (gtk:make-window :type :toplevel :title "Hello World"
:auto-shrink t :visible t))
(gtk:make-label :label "Hello World(こんにちは)" :parent window :visible t)
戻る