Update of /project/cells-gtk/cvsroot/root/gtk-ffi
In directory common-lisp.net:/tmp/cvs-serv8389/gtk-ffi
Modified Files:
gtk-ffi.lisp
Log Message:
provisions to load libcellsgtk, definition of gtk-event-key foreign structure.
Date: Sat Feb 26 23:37:40 2005
Author: pdenno
Index: root/gtk-ffi/gtk-ffi.lisp
diff -u root/gtk-ffi/gtk-ffi.lisp:1.9 root/gtk-ffi/gtk-ffi.lisp:1.10
--- root/gtk-ffi/gtk-ffi.lisp:1.9 Sat Feb 12 16:07:58 2005
+++ root/gtk-ffi/gtk-ffi.lisp Sat Feb 26 23:37:40 2005
@@ -45,11 +45,12 @@
'(:array :int) index)
new-value))
+
(eval-when (:compile-toplevel :load-toplevel :execute)
(export '(c-null c-null-int int-slot-indexed))
(defun gtk-function-name (lisp-name)
(substitute #\_ #\- lisp-name))
-
+
(defun libname (lib)
#+(or win32 mswindows)
(concatenate 'string
@@ -59,7 +60,7 @@
(:glib "libglib-2.0-0.dll")
(:gthread "libgthread-2.0-0.dll")
(:gdk "libgdk-win32-2.0-0.dll")
- (:gtk "libgtk-win32-2.0-0.dll")))
+ (:cgtk "libcellsgtk")))
#+macosx
(concatenate 'string
"/sw/lib/"
@@ -68,25 +69,32 @@
(:glib "libglib-2.0.0.dylib")
(:gthread "libgthread-2.0.0.dylib")
(:gdk "libgdk-x11-2.0.0.dylib")
- (:gtk "libgtk-x11-2.0.0.dylib")))
+ (:gtk "libgtk-x11-2.0.0.dylib")
+ (:cgtk "libcellsgtk.dylib")))
#-(or macosx win32 mswindows)
(ecase lib
(:gobject "libgobject-2.0")
(:glib "libglib-2.0")
(:gthread "libgthread-2.0")
(:gdk "libgdk-x11-2.0")
- (:gtk "libgtk-x11-2.0")))
+ (:gtk "libgtk-x11-2.0")
+ (:cgtk "libcellsgtk")))
+
+
+
#+cmu
- (loop for lib in '(:gthread :glib :gobject :gdk :gtk)
+ (loop for lib in '(:gthread :glib :gobject :gdk :gtk #+libcellsgtk :cgtk)
with libpath = (cond ((directory "/usr/lib/libgtk*") "/usr/lib/")
((directory "/opt/gnome/lib/libgtk*") "/opt/gnome/lib/")
((find :mswindows *features*) nil)
(t (error "Cannot find a path containing libgtk")))
do (assert (uffi:load-foreign-library ;;simon
- (hic:find-foreign-library (gtk-ffi::libname lib) libpath)
- :force-load nil
- :module (string lib)))
- )
+ (hic:find-foreign-library (gtk-ffi::libname lib) libpath)
+ :force-load nil
+ :module (string lib))))
+
+ #-libcellsgtk
+ (warn "libcellsgtk.so not found. Just a few capabilities will be unavailable.")
(defun ffi-to-uffi-type (clisp-type)
#+clisp clisp-type
@@ -103,6 +111,7 @@
(sint32 :int)
(uint32 :unsigned-int)
(uint8 :unsigned-byte)
+ (uint16 :short) ; no signed/unsigned types?
(boolean :unsigned-int)
(ulong :unsigned-long)
(int :int)
@@ -252,6 +261,18 @@
(x_root double-float)
(y_root double-float))
+(def-c-struct gdk-event-key
+ (type int)
+ (window c-pointer)
+ (send-event uint8)
+ (time uint32)
+ (state uint)
+ (keyval uint)
+ (length int)
+ (string c-pointer)
+ (hardware-keycode uint16)
+ (group uint8))
+
(defun event-type (event)
(ecase event
(-1 :nothing)
@@ -347,7 +368,6 @@
(setf (get-slot-value ,iter-var 'gtk-tree-iter 'user-data2) c-null)
(setf (get-slot-value ,iter-var 'gtk-tree-iter 'user-data3) c-null)
,@body))
-
(eval-when (:compile-toplevel :load-toplevel :execute)
(defun as-gtk-type-name (type)