chiark / gitweb /
Added new function ENSURE-TREE-PATH
[clg] / README
CommitLineData
4cbcd094 1This package contains Common Lisp bindings to GTK+ v2.x. It currently
0be98939 2only works with CMUCL 19 and SBCL 0.9, but ports to other CL
4cbcd094 3implementations may be added later.
560af5c5 4
5
6New versions
7------------
8
4cbcd094 9The most recent version of this package can be downloaded from
10http://sourceforge.net/projects/clg.
560af5c5 11
12
13
14Build instructions
15------------------
16
b56b4e4a 171. If you are using a version of SBCL without native callback support
18 you need to upgrade or add third party callback code. The following
19 instructions of how to add third party callback support, are borrowed
20 from the Common Music installation guide:
792ab9c7 21
22 1. Download Thomas Burdick's Alien Function package╣ and restore it
23 to a directory on your machine.
24 2. Compile the Alien Function package and save a new sbcl.core image:
25
26 $ cd sbcl-af
27 $ sbcl --load "system"
28 * (sb-ext:save-lisp-and-die "/tmp/sbcl.core")
29 $ cd /usr/local/lib/sbcl
30 $ cp sbcl.core sbcl.core.orig
31 $ mv /tmp/sbcl.core .
32
33
17bf3fff 34 ╣ A slightly modified version which works with SBCL 0.8.21 or newer
35 could be found at
36 http://jupiter.td.org.uit.no/lisp/sbcl-0.8.21-af.tar.gz
560af5c5 37
af2d02f4 38
4cbcd094 392. Set up paths to match your system:
af2d02f4 40
792ab9c7 41 - Add a logical-pathname-translation to the clg root directory in
4cbcd094 42 ~/.cmucl-init.lisp, ~/.sbclrc or some other startup file, like
43 this:
af2d02f4 44
f00b458d 45 (setf
46 (logical-pathname-translations "clg")
47 '(("**;*.*.*" "/home/espen/src/clg/**/")))
48
792ab9c7 49 - Set the correct pkg-config search path if your Gtk+ installation
f00b458d 50 is in an unusual place, by adding it to the PKG_CONFIG_PATH
51 environment variable before starting lisp.
52
792ab9c7 53 - Make sure ASDF finds the system definition files:
4cbcd094 54
961f051e 55 (push
56 (logical-pathname-translations "clg:systems;")
4cbcd094 57 asdf:*central-registry*)
58
59 When checking out of CVS also do the following:
60 $ cd <clg toplevel>
61 $ mkdir systems && cd systems
62 $ find .. -name '*.asd' -exec ln -s {} . \;
f00b458d 63
64
653. Compile and load the system:
66
67 (asdf:oos 'asdf:load-op :gtk)
68
17bf3fff 69 In CMUCL 19a this will fail with:
f00b458d 70
71 Error in function KERNEL::%REDEFINE-DEFSTRUCT:
72 Redefining class PCL::SLOT-INFO incompatibly with the current definition.
73
792ab9c7 74 Just accept the redefinition (restart 1) to continue building or
305588d5 75 loading. To avoid doing this every time clg is loaded, compile
76 and load glib/pcl.lisp in newly started CMUCL process and save a
17bf3fff 77 new core image.
792ab9c7 78
79 If you are running SBCL with Slime you need to put the following
4cbcd094 80 in ~/.swank.lisp to prevent Slime from spawning multiple
81 threads, since GTK+ is not really thread safe:
792ab9c7 82
83 #+sbcl(setq swank:*communication-style* :fd-handler)
af2d02f4 84
af2d02f4 85
864. If everything worked, try (load "hello-world") to see a small
f00b458d 87 window pop up, and then run testgtk.lisp in the example directory.
88
af2d02f4 89
af2d02f4 90
792ab9c7 91Guidelines for using the GTK+ API documentation
92-----------------------------------------------
93
94Here are some brief guidelines for using the GTK+ API documentation. A
4cbcd094 95lot of (both intentional and unintentional) inconsistencies exists,
96so it is also wise to check the source code.
792ab9c7 97
98- library prefixes are stripped from all symbols
99
100- the get/set part are removed from regular accessors, but retained
101 in functions which set or retrieve multiple values
560af5c5 102
792ab9c7 103- predicate functions follow the normal convention of ending
104 with '-P'
560af5c5 105
792ab9c7 106- if there are multiple similar named functions which only differ in
107 the type of argument they accept, only one function accepting any
108 kind of valid argument types is provided
560af5c5 109
792ab9c7 110- there are no gtk_*_new functions, use MAKE-INSTANCE to create widgets
111
112- all object properties are available as virtual slots. A lot of
113 "missing" properties are manually defined as slots
114
115- use CHILD-PROPERTY-VALUE or automatically defined accessors to
116 access child properties
117
118- use STYLE-PROPERTY-VALUE to access style properties
119
120- the only function used to connect signals is SIGNAL-CONNECT
121
122
123
124
792ab9c7 125Send comments and patches to clg-devel@lists.sourceforge.net or
126espen@users.sourceforge.net.