Update of /project/lgtk/cvsroot/lgtk/src
In directory common-lisp.net:/tmp/cvs-serv24716
Modified Files:
gtkbindings.lisp gtklisp.lisp
Log Message:
Added signal connector for glade_xml (or at least, I hope so)
Date: Thu Nov 25 21:21:56 2004
Author: mmommer
Index: lgtk/src/gtkbindings.lisp
diff -u lgtk/src/gtkbindings.lisp:1.7 lgtk/src/gtkbindings.lisp:1.8
--- lgtk/src/gtkbindings.lisp:1.7 Thu Nov 25 20:05:25 2004
+++ lgtk/src/gtkbindings.lisp Thu Nov 25 21:21:55 2004
@@ -21,6 +21,10 @@
(def-encapsulator gslist-encap gslist)
+(defclass GladeXML (sapcapsule) ())
+
+(def-encapsulator GladeXML-encap GladeXML)
+
;; For types where nil is acceptable as an object
(defun contents-nil (obj)
(cond ((null obj) obj)
@@ -38,6 +42,11 @@
:out 'gslist-encap
:alien '(* t))
+ (GladeXML
+ :in 'contents-nil
+ :out 'GladeXML-encap
+ :alien '(* t))
+
; (gtkwindowtype
; :in 'gtkwindowtype
; :alien :int)
@@ -425,6 +434,12 @@
(guint data)
(gfunc closurenotify)
(gint flags)))
+
+(def-raw-binding "glade_xml_signal_connect_data"
+ (void (GladeXML xml)
+ (c-string name)
+ (gfunc fun)
+ (guint data)))
(def-raw-binding "gtk_main" (void))
Index: lgtk/src/gtklisp.lisp
diff -u lgtk/src/gtklisp.lisp:1.6 lgtk/src/gtklisp.lisp:1.7
--- lgtk/src/gtklisp.lisp:1.6 Sat Dec 13 12:10:17 2003
+++ lgtk/src/gtklisp.lisp Thu Nov 25 21:21:55 2004
@@ -48,6 +48,58 @@
(debugf t "Tacked callback id ~A to widget ~a for ~s.~%"
(id it) wid (marker signal))))
+(defun g-signal-connect (wid signal func &key data (flags :g-connect-none))
+;; the data argument is a keyword arg because we do not need to fake
+;; closures.
+ (declare (optimize (debug 3)))
+ (let* ((rw (contents wid))
+ (it (make-instance 'gtk-object-callback
+ :object wid
+ :func func
+ :data data
+ :nexus *gtkcallbacks*))
+ (meta (meta wid)))
+
+ (setf (contents it)
+ (gtk-aliens::|g_signal_connect_data|
+ rw (marker signal) (trampoline signal) (id it)
+ nil (gconnectflags flags)))
+
+ (if (eql signal gtkdestroy)
+ (pushnew (meta it) (destroyers meta))
+ (pushnew (meta it) (callbacks meta)))
+
+ (gcconnect it wid)
+
+ (debugf t "Tacked callback id ~A to widget ~a for ~s.~%"
+ (id it) wid (marker signal))))
+
+(defun glade-xml-signal-connect (wid signal func
+ &key data)
+;; the data argument is a keyword arg because we do not need to fake
+;; closures.
+ (declare (optimize (debug 3)))
+ (let* ((rw (contents wid))
+ (it (make-instance 'gtk-object-callback
+ :object wid
+ :func func
+ :data data
+ :nexus *gtkcallbacks*))
+ (meta (meta wid)))
+
+ (setf (contents it)
+ (gtk-aliens::|glade_xml_signal_connect_data|
+ rw (marker signal) (trampoline signal) (id it)))
+
+ (if (eql signal gtkdestroy)
+ (pushnew (meta it) (destroyers meta))
+ (pushnew (meta it) (callbacks meta)))
+
+ (gcconnect it wid)
+
+ (debugf t "Tacked (glade) callback id ~A to widget ~a for ~s.~%"
+ (id it) wid (marker signal))))
+
(defun g-signal-connect-swapped
(wid signal func &key data (flags :g-connect-none))