[cells-gtk-cvs] CVS update: root/cells-gtk/cells-gtk.lisp root/cells-gtk/tree-view.lisp root/cells-gtk/widgets.lisp

Kenny Tilton ktilton at common-lisp.net
Thu Dec 16 04:51:15 UTC 2004


Update of /project/cells-gtk/cvsroot/root/cells-gtk
In directory common-lisp.net:/tmp/cvs-serv27365/cells-gtk

Modified Files:
	cells-gtk.lisp tree-view.lisp widgets.lisp 
Log Message:
Both AllegroCL and Lispworks now run Cells-gtk on win32. Pretty much. All of Vasilis's examples work, with one known fault in Lispworks and bigger problems in AllegroCL in a couple of examples. This means a huge amount works, because vasilis did an extraordinary coverage of Gtk2 in his examples. I be moving on to see if I can score OS/X.
Date: Thu Dec 16 05:51:11 2004
Author: ktilton

Index: root/cells-gtk/cells-gtk.lisp
diff -u root/cells-gtk/cells-gtk.lisp:1.2 root/cells-gtk/cells-gtk.lisp:1.3
--- root/cells-gtk/cells-gtk.lisp:1.2	Sun Dec  5 07:33:22 2004
+++ root/cells-gtk/cells-gtk.lisp	Thu Dec 16 05:51:11 2004
@@ -25,11 +25,7 @@
 
 
 (defun gtk-tree-store-set-kids (model val-tree par-iter index column-types items-factory &optional path)
-  (with-foreign-object (iter 'gtk-tree-iter)
-    (setf (get-slot-value iter 'gtk-tree-iter 'stamp) 0)
-    (setf (get-slot-value iter 'gtk-tree-iter 'user-data) 0)
-    (setf (get-slot-value iter 'gtk-tree-iter 'user-data2) 0)
-    (setf (get-slot-value iter 'gtk-tree-iter 'user-data3) 0)
+  (with-tree-iter (iter)
     (gtk-ffi::gtk-tree-store-append model iter par-iter)
     (gtk-ffi::gtk-tree-store-set model iter
       column-types


Index: root/cells-gtk/tree-view.lisp
diff -u root/cells-gtk/tree-view.lisp:1.4 root/cells-gtk/tree-view.lisp:1.5
--- root/cells-gtk/tree-view.lisp:1.4	Tue Dec 14 05:01:51 2004
+++ root/cells-gtk/tree-view.lisp	Thu Dec 16 05:51:11 2004
@@ -102,24 +102,25 @@
 
 (ff-defun-callable :cdecl :int tree-view-select-handler
   ((column-widget (* :void)) (event (* :void)) (data (* :void)))
-  (let ((tree-view (gtk-object-find column-widget t)))
+  (bif (tree-view (gtk-object-find column-widget))
     (let ((cb (callback-recover tree-view :on-select)))
-      (funcall cb tree-view column-widget event data))))
+      (funcall cb tree-view column-widget event data))
+    (trc "dude, clean up old widgets after runs" column-widget)))
 
 (def-c-output on-select ((self tree-view))
   (when new-value    
     (trc "output on-select" self new-value)
     (let* ((selected-widget (gtk-tree-view-get-selection (id self)))
-           (selected-clos (gtk-object-find selected-widget nil)))
-      (unless selected-clos
-        (trc "whoa!!! no clos for selected" self selected-widget))
-      (when selected-clos
-        (assert (eql self selected-clos))
-        (gtk-object-store selected-widget self) ;; tie column widg to clos tree-view
-        (callback-register self :on-select new-value)
-        (let ((cb (ff-register-callable 'tree-view-select-handler)))
-          (trc "tree-view on-select pcb:" cb selected-widget "changed")
-          (gtk-signal-connect selected-widget "changed" cb)))))) 
+           (selected-clos (gtk-object-find selected-widget)))
+      (if (not selected-clos)
+        (trc "whoa!!! no clos for selected" self selected-widget)
+        (when selected-clos
+          (assert (eql self selected-clos))
+          (gtk-object-store selected-widget self) ;; tie column widg to clos tree-view
+          (callback-register self :on-select new-value)
+          (let ((cb (ff-register-callable 'tree-view-select-handler)))
+            (trc "tree-view on-select pcb:" cb selected-widget "changed")
+            (gtk-signal-connect selected-widget "changed" cb)))))))
 
 (defmodel listbox (tree-view)
   ()
@@ -171,13 +172,15 @@
 				  (append (column-types self) (list :string)) 
 				  (items-factory self)))))
 
-(ff-defun-callable :cdecl :int tree-view-render-call-callback
+(ff-defun-callable :cdecl :int tree-view-render-cell-callback
     ((tree-column (* :void)) (cell-renderer (* :void))
      (tree-model (* :void)) (iter (* :void)) (data (* :void)))
-  (let* ((self (gtk-object-find tree-column t))
-         (cb (callback-recover self :render-cell)))
-    (assert cb () "No :render-cell callback for ~a" self)
-    (funcall cb tree-column cell-renderer tree-model iter data)))
+  (bif (self (gtk-object-find tree-column))
+    (let ((cb (callback-recover self :render-cell)))
+      (assert cb () "No :render-cell callback for ~a" self)
+      (funcall cb tree-column cell-renderer tree-model iter data))
+    (trc "dude, clean up old widgets from prior runs" tree-column))
+  1)
 
 (def-c-output columns ((self tree-view))
   (when new-value
@@ -189,7 +192,7 @@
                          (t (gtk-cell-renderer-text-new))) do
           (gtk-tree-view-column-pack-start (id col) renderer t)
           (gtk-tree-view-column-set-cell-data-func (id col) renderer
-            (let ((cb (ff-register-callable 'tree-view-render-call-callback)))
+            (let ((cb (ff-register-callable 'tree-view-render-cell-callback)))
               (trc "tree-view columns pcb:" cb (id col) :render-cell)
               (callback-register col :render-cell
                 (gtk-tree-view-render-cell pos 


Index: root/cells-gtk/widgets.lisp
diff -u root/cells-gtk/widgets.lisp:1.4 root/cells-gtk/widgets.lisp:1.5
--- root/cells-gtk/widgets.lisp:1.4	Tue Dec 14 05:01:51 2004
+++ root/cells-gtk/widgets.lisp	Thu Dec 16 05:51:11 2004
@@ -80,11 +80,11 @@
   (when *gtk-objects*
     (let ((clos-widget (gethash hash-id *gtk-objects*)))
       (when (and must-find-p (not clos-widget))
-        (format t "~&gtk-object-find> ID ~a not found!!!!!!!" hash-id)
+        (format t "~&gtk.object.find> ID ~a not found!!!!!!!" hash-id)
         (maphash (lambda (key value)
                    (format t "~&  known: ~a | ~a" key value))
           *gtk-objects*)
-        (break "gtk-object-find ID not found ~a" hash-id))                  
+        (break "gtk.object.find ID not found ~a" hash-id))                  
       clos-widget)))
 
 ;; ----- fake callbackable closures ------------
@@ -120,9 +120,10 @@
   `(ff-defun-callable :cdecl :int ,(intern (string-upcase (format nil "~a-handler" event)))
      ((widget (* :void)) (event (* :void)) (data (* :void)))
      ;(print (list :entered-gtk-event-handler-cb ,(symbol-name event) widget))
-     (let ((self (gtk-object-find widget t)))
+     (bif (self (gtk-object-find widget))
        (let ((cb (callback-recover self ,(intern (symbol-name event) :keyword))))
-         (funcall cb self widget event data)))))
+         (funcall cb self widget event data))
+       (trc "unknown widget. from prior run. clean up on errors" widget))))
 
 (def-gtk-event-handler clicked)
 (def-gtk-event-handler changed)




More information about the Cells-gtk-cvs mailing list