I upgraded my Ubuntu installation and this time I wrote down what
I needed for a running cells-gtk installation (with sbcl):

-------------------------------------------------------------- script
---------------------
sudo apt-get install darcs git-core cvs emacs libgtk2.0-dev

cd ~/src
wget
http://puzzle.dl.sourceforge.net/sourceforge/sbcl/sbcl-1.0.23-x86-linux-binary.tar.bz2
tar xjf sbcl-1.0.23-x86-linux-binary.tar.bz2
cd sbcl-1.0.23-x86-linux
INSTALL_ROOT=/usr/local sudo sh install.sh
mkdir ~/.sbcl
mkdir ~/.sbcl/site
mkdir ~/.sbcl/systems

# command to link new asd files into systems/
# run this after extracting a source package in ~/.sbcl/site
echo 'for i in `find ~/.sbcl/site -type f | grep \\.asd$`;do ln -s $i
~/.sbcl/systems/; done' > ~/.sbcl/run
chmod a+x ~/.sbcl/run

# delete all fasl files. most of the time running this makes everything work
echo 'find ~/.sbcl/site -type f |grep \\.fasl$|xargs rm' > ~/.sbcl/clean
chmod a+x ~/.sbcl/clean

cd ~/.sbcl/site
git clone git://github.com/Ramarren/cells-gtk3.git
git clone git://github.com/Ramarren/cells.git
darcs get http://www.common-lisp.net/project/cl-opengl/darcs/cl-opengl/
darcs get http://common-lisp.net/project/cffi/darcs/cffi/
darcs get http://common-lisp.net/project/babel/darcs/babel
darcs get http://common-lisp.net/project/alexandria/darcs/alexandria
darcs get 
http://common-lisp.net/~loliveira/darcs/trivial-features<http://common-lisp.net/%7Eloliveira/darcs/trivial-features>
darcs get 
http://common-lisp.net/~loliveira/darcs/trivial-garbage<http://common-lisp.net/%7Eloliveira/darcs/trivial-garbage>
darcs get
http://common-lisp.net/project/bordeaux-threads/darcs/bordeaux-threads
git clone 
http://www.princeton.edu/~tpapp/software/cl-cairo2.git<http://www.princeton.edu/%7Etpapp/software/cl-cairo2.git>
wget
http://www.common-lisp.net/project/cl-utilities/cl-utilities-latest.tar.gz
tar xzf cl-utilities-latest.tar.gz
# there seems to be at least one other cl-colors package, which is
incompatible
wget http://common-lisp.net/project/cl-colors/cl-colors-latest.tar.gz
tar xzf cl-colors-latest.tar.gz
~/.sbcl/run

cd ~/.sbcl/site/cl-opengl/
make
cd ~/.sbcl/site/cells-gtk3/gtk-ffi
make
cd ~/.sbcl/site/cffi
make

cd ~/src
cvs -d :pserver:anonymous:anonym...@common-lisp.net:/project/slime/cvsroot
co slime

sudo apt-get install paredit-el

# turn paredit and slime on in emacs
cat >> ~/.emacs << "EOF"
(mapc (lambda (mode)
    (let ((hook (intern (concat (symbol-name mode)
                    "-mode-hook"))))
      (add-hook hook (lambda () (paredit-mode +1)))))
      '(emacs-lisp lisp inferior-lisp))
(add-to-list 'load-path "~/src/slime/")  ; your SLIME directory
(setq inferior-lisp-program "/usr/local/bin/sbcl") ; your Lisp system
(require 'slime)
(slime-setup)
(add-hook 'slime-mode-hook
      (lambda ()
        (unless (slime-connected-p)
          (save-excursion (slime)))))
EOF

# I want to have the keys () where [] normally are (on us keyboard)
# I enable it with ~/init
cat >> ~/swap_parent.xmod << "EOF"
keycode  18 = 9 bracketleft
keycode  19 = 0 bracketright
keycode  34 = parenleft braceleft
keycode  35 = parenright braceright
EOF

echo 'xmodmap ~/swap_parent.xmod' > ~/init
chmod a+x ~/init


---------------------- script - end -------------------

after these steps the following program worked.
to run it either save it to file [e.g. gl.lisp] and run
sbcl --load gl.lisp
or more for a more lispy experience open it in emacs
press C-M-x on the line (require :cells-gtk)
press C-c C-k
move the slider
change the source.
you can leave the window open. just call
the last progn to clear the kids in :martin-top
with a new setf a completely new layout can be loaded

---------------------- source --------------

(require :asdf)
(require :cells-gtk)
(defpackage :kielhorn.martin.cgtk-show
  (:use :cells :cl :cells-gtk))

(in-package :kielhorn.martin.cgtk-show)

(defmodel my-app (gtk-app)
  ()
  (:default-initargs
      :md-name :martin-top
    :width (c-in 300)
    :height (c-in 300)
    :kids (c-in nil)))

(init-gtk)
(start-win 'my-app)


(defun draw-grid ()
;  (gl:line-width .7)
  (gl:color 1 1 1 .6)
  (gl:with-primitive :lines
    (loop for i from -10 below 12 by 2 do
      (gl:vertex i 10) (gl:vertex i -10))
    (loop for i from -10 below 12 by 2 do
      (gl:vertex 10 i) (gl:vertex -10 i))))

(defun threed-draw (self)
  (gl:clear :color-buffer-bit :depth-buffer-bit)
  (draw-grid)
  (gl:with-pushed-matrix
    (gl:translate 0 0 (zpos self))
    (gl:with-primitive :lines
      ;;(gl:line-width 2)
      (gl:color 1 0 0) (gl:vertex 5 0 0) (gl:vertex 0 0 0)
      (gl:color 0 1 0) (gl:vertex 0 5 0) (gl:vertex 0 0 0)
      (gl:color 0 0 1) (gl:vertex 0 0 5) (gl:vertex 0 0 0)))
  ;;(timeout-add 30 #'(lambda () (redraw (find-widget :threed))))
  )

(defmodel threed (gl-drawing-area)
  ((zpos :cell t :reader zpos :initarg :zpos :initform (c-in 0)))
  (:default-initargs
      :width (c-in 200)
    :height (c-in 200)
    :init #'(lambda (self)
          (gl:enable :blend :depth-test :line-smooth)
          (gl:blend-func :one :src-alpha)
          (with-integrity (:change :adjust-widget-size)
        (setf (allocated-width self) (width self)
              (allocated-height self) (height self))))
    :resize #'(lambda (self)
        (let ((w (allocated-width self))
              (h (allocated-height self)))
          (gl:viewport 0 0 w h)
         (with-matrix-mode (:projection)
           (glu:perspective 60 (/ w h) .1 200))
         (gl:matrix-mode :modelview)
         (gl:load-identity)
         (glu:look-at 10 10 3
                  0 0 0
                  0 0 1)))
    :draw 'threed-draw))

(setf (kids (find-widget :martin-top))
      (list
       (mk-vbox :fm-parent (find-widget :martin-top)
        :kids
        (kids-list?
         (mk-hscale :md-name :scale-zpos
                :min -10
                :max 10
                :init 0
                :step .05
                )
         (make-kid 'threed
               :md-name :threed
               :zpos (c? (progn
                       (redraw (find-widget :threed))
                       (widget-value :scale-zpos))))))))

(unless t
  (progn
    (not-to-be (find-widget :threed))
    (setf (kids (find-widget :martin-top))
      nil)))

-------------- source - end ------------------



-- 
Martin Kielhorn
Randall Division of Cell & Molecular Biophysics
King's College London, New Hunt's House
Guy's Campus, London SE1 1UL, U.K.
tel: +44 (0) 207 848 6519,  fax: +44 (0) 207 848 6435
_______________________________________________
cells-gtk-devel site list
cells-gtk-devel@common-lisp.net
http://common-lisp.net/mailman/listinfo/cells-gtk-devel

Reply via email to