Update of /project/cells-gtk/cvsroot/root/cells-gtk
In directory common-lisp.net:/tmp/cvs-serv25746/cells-gtk
Modified Files:
addon.lisp buttons.lisp callback.lisp gtk-app.lisp menus.lisp
tree-view.lisp widgets.lisp
Log Message:
Ongoing port to Lispworks
Date: Mon Dec 6 21:04:13 2004
Author: ktilton
Index: root/cells-gtk/addon.lisp
diff -u root/cells-gtk/addon.lisp:1.2 root/cells-gtk/addon.lisp:1.3
--- root/cells-gtk/addon.lisp:1.2 Sun Dec 5 07:33:22 2004
+++ root/cells-gtk/addon.lisp Mon Dec 6 21:04:12 2004
@@ -24,8 +24,7 @@
()
(day-selected)
:on-day-selected (callback (widg signal data)
- (setf (md-value self) (get-date self))))
-
+ (setf (md-value self) (get-date self))))
(defmethod get-date ((self calendar))
(with-foreign-objects ((year :int)(month :int)(day :int))
Index: root/cells-gtk/buttons.lisp
diff -u root/cells-gtk/buttons.lisp:1.2 root/cells-gtk/buttons.lisp:1.3
--- root/cells-gtk/buttons.lisp:1.2 Sun Dec 5 07:33:22 2004
+++ root/cells-gtk/buttons.lisp Mon Dec 6 21:04:12 2004
@@ -51,9 +51,23 @@
(toggled)
:active (c-in nil)
:on-toggled (callback (widget event data)
+ (print (list :toggle-button :on-toggled-cb widget))
(let ((state (gtk-toggle-button-get-active widget)))
+ (print (list :toggledstate state))
(setf (md-value self) state))))
+#+test
+(DEF-GTK WIDGET TOGGLE-BUTTON (BUTTON) ((INIT :ACCESSOR INIT :INITARG :INIT :INITFORM NIL))
+ (MODE ACTIVE) (TOGGLED) :ACTIVE (C-IN NIL) :ON-TOGGLED
+ (CALLBACK (WIDGET EVENT DATA)
+ (LET ((STATE (GTK-TOGGLE-BUTTON-GET-ACTIVE WIDGET)))
+ (SETF (MD-VALUE SELF) STATE))))
+
+#+test
+(DEF-C-OUTPUT ACTIVE ((SELF TOGGLE-BUTTON))
+ (WHEN (OR NEW-VALUE OLD-VALUE)
+ (CONFIGURE SELF #'GTK-TOGGLE-BUTTON-SET-ACTIVE NEW-VALUE)))
+
(def-c-output init ((self toggle-button))
(setf (active self) new-value)
(setf (md-value self) new-value))
@@ -73,8 +87,9 @@
c-null
(id (first (kids (fm-parent self))))))))
:on-toggled (callback (widget event data)
- (let ((state (gtk-toggle-button-get-active widget)))
- (setf (md-value self) state))))
+ (print (list :radio-button widget event data))
+ (let ((state (gtk-toggle-button-get-active widget)))
+ (setf (md-value self) state))))
(def-c-output .md-value ((self radio-button))
(when (and new-value (upper self box))
Index: root/cells-gtk/callback.lisp
diff -u root/cells-gtk/callback.lisp:1.2 root/cells-gtk/callback.lisp:1.3
--- root/cells-gtk/callback.lisp:1.2 Sun Dec 5 07:33:22 2004
+++ root/cells-gtk/callback.lisp Mon Dec 6 21:04:12 2004
@@ -13,15 +13,15 @@
;(format t "sym:~S fun:~A~%" sym func-self)
;(force-output)
(when (not func-self)
- (when *gtk-debug*
- (format t "~&callback ~a, type ~a, pkg ~a, not found. known callbacks:"
- callback-id (type-of callback-id) (when (typep callback-id 'symbol)
- (symbol-package callback-id)))
- (maphash (lambda (key func-self)
- (declare (ignore func-self))
- (format t "~&known callback key ~a, type ~a, pkg ~a"
- key (type-of key)(when (typep key 'symbol) (symbol-package key))))
- (callbacks gtk-app))))
+ (when *gtk-debug*
+ (format t "~&callback ~a, type ~a, pkg ~a, not found. known callbacks:"
+ callback-id (type-of callback-id) (when (typep callback-id 'symbol)
+ (symbol-package callback-id)))
+ (maphash (lambda (key func-self)
+ (declare (ignore func-self))
+ (format t "~&known callback key ~a, type ~a, pkg ~a"
+ key (type-of key)(when (typep key 'symbol) (symbol-package key))))
+ (callbacks gtk-app))))
(when (car func-self)
(apply (car func-self) (cdr func-self) callback callback-args)))))
Index: root/cells-gtk/gtk-app.lisp
diff -u root/cells-gtk/gtk-app.lisp:1.2 root/cells-gtk/gtk-app.lisp:1.3
--- root/cells-gtk/gtk-app.lisp:1.2 Sun Dec 5 07:33:22 2004
+++ root/cells-gtk/gtk-app.lisp Mon Dec 6 21:04:12 2004
@@ -25,8 +25,9 @@
(tooltips-delay :accessor tooltips-delay :initarg :tooltips-delay :initform (c-in nil)))
(:default-initargs
:on-delete-event (lambda (self widget event data)
- (declare (ignore self widget event data))
- (gtk-main-quit))))
+ (declare (ignore self widget event data))
+ (gtk-main-quit)
+ 0)))
(def-c-output tooltips-enable ((self gtk-app))
(when (tooltips self)
@@ -56,11 +57,10 @@
(trc "GTK INITIALIZATION") (force-output))
(g-thread-init c-null)
(gdk-threads-init)
- (assert (gtk-init-check c-null c-null))
+ (assert (gtk-init-check c-null-int c-null))
(setf *gtk-initialized* t))
(with-gdk-threads
- ;(gvi :withread)
(let ((app (make-instance app-name :visible (c-in nil)))
(splash))
(when (splash-screen-image app)
@@ -71,12 +71,11 @@
(setf (visible splash) t)
(loop while (gtk-events-pending) do
(gtk-main-iteration)))
- (gvi :splashup)
+
(to-be app)
- (gvi :appup)
+
(when splash
(not-to-be splash)
- (gvi :splashdown)
(gtk-window-set-auto-startup-notification t))
(setf (visible app) t)
Index: root/cells-gtk/menus.lisp
diff -u root/cells-gtk/menus.lisp:1.2 root/cells-gtk/menus.lisp:1.3
--- root/cells-gtk/menus.lisp:1.2 Sun Dec 5 07:33:22 2004
+++ root/cells-gtk/menus.lisp Mon Dec 6 21:04:12 2004
@@ -20,7 +20,8 @@
(def-widget combo-box ()
((items :accessor items :initarg :items :initform nil)
- (items-factory :accessor items-factory :initarg :items-factory :initform #'(lambda (item) (format nil "~a" item)))
+ (items-factory :accessor items-factory :initarg :items-factory
+ :initform #'(lambda (item) (format nil "~a" item)))
(init :accessor init :initarg :init :initform nil))
(active)
(changed)
Index: root/cells-gtk/tree-view.lisp
diff -u root/cells-gtk/tree-view.lisp:1.2 root/cells-gtk/tree-view.lisp:1.3
--- root/cells-gtk/tree-view.lisp:1.2 Sun Dec 5 07:33:23 2004
+++ root/cells-gtk/tree-view.lisp Mon Dec 6 21:04:12 2004
@@ -102,7 +102,7 @@
(ff-defun-callable :cdecl :int tree-view-select-handler
((column-widget (* :void)) (event (* :void)) (data (* :void)))
- (let ((tree-view (gtk-object-find column-widget)))
+ (let ((tree-view (gtk-object-find column-widget t)))
(let ((cb (callback-recover tree-view :on-select)))
(funcall cb tree-view column-widget event data))))
@@ -173,11 +173,10 @@
(ff-defun-callable :cdecl :int tree-view-render-call-callback
((tree-column (* :void)) (cell-renderer (* :void))
(tree-model (* :void)) (iter (* :void)) (data (* :void)))
- (let ((self (gtk-object-find tree-column)))
- (assert self)
- (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))))
+ (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)))
(def-c-output columns ((self tree-view))
(when new-value
Index: root/cells-gtk/widgets.lisp
diff -u root/cells-gtk/widgets.lisp:1.2 root/cells-gtk/widgets.lisp:1.3
--- root/cells-gtk/widgets.lisp:1.2 Sun Dec 5 07:33:23 2004
+++ root/cells-gtk/widgets.lisp Mon Dec 6 21:04:12 2004
@@ -52,37 +52,41 @@
(defun gtk-objects-init ()
(setf *gtk-objects* (make-hash-table :size 100 :rehash-size 100)))
-(defun gtk-object-store (id gtk-object)
+(defun gtk-object-store (gtk-id gtk-object &aux (hash-id (pointer-address gtk-id)))
(unless *gtk-objects*
(gtk-objects-init))
- (let ((known (gethash id *gtk-objects*)))
+ (let ((known (gethash hash-id *gtk-objects*)))
(cond
((not known)
- (setf (gethash id *gtk-objects*) gtk-object))
+ (setf (gethash hash-id *gtk-objects*) gtk-object))
((eql known gtk-object))
(t
(break "gtk-object-store id ~a already known as ~a, not ~a"
- id known gtk-object)))))
+ hash-id known gtk-object)))))
-(defun gtk-object-forget (id gtk-object)
+(defun gtk-object-forget (gtk-id gtk-object &aux (hash-id (pointer-address gtk-id)))
(assert *gtk-objects*)
- (let ((known (gethash id *gtk-objects*)))
+ (let ((known (gethash hash-id *gtk-objects*)))
(cond
((not known))
((eql known gtk-object)
- (setf (gethash id *gtk-objects*) nil))
+ (setf (gethash hash-id *gtk-objects*) nil))
(t
(break "gtk-object-store id ~a known as ~a, not forgettable ~a"
- id known gtk-object)))))
+ hash-id known gtk-object)))))
#+shhh
(maphash (lambda (k v) (print (list k v))) *gtk-objects*)
-(defun gtk-object-find (id &optional must-find-p)
+(defun gtk-object-find (gtk-id &optional must-find-p &aux (hash-id (pointer-address gtk-id)))
(when *gtk-objects*
- (let ((clos-widget (gethash id *gtk-objects*)))
- (when must-find-p
- (assert clos-widget))
+ (let ((clos-widget (gethash hash-id *gtk-objects*)))
+ (when (and must-find-p (not clos-widget))
+ (format t "~>k-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))
clos-widget)))
;; ----- fake callbackable closures ------------
@@ -112,11 +116,11 @@
(defmacro def-gtk-event-handler (event)
`(ff-defun-callable :cdecl :int ,(intern (string-upcase (format nil "~a-handler" event)))
- ((widget (* :void)) (event (* :void)) (data (* :void)))
- (let ((self (gtk-object-find widget)))
- (assert self)
- (let ((cb (callback-recover self ,(intern (symbol-name event) :keyword))))
- (funcall cb self widget event data)))))
+ ((widget (* :void)) (event (* :void)) (data (* :void)))
+ (print (list :def-gtk-event-handler ,(symbol-name event)))
+ (let ((self (gtk-object-find widget t)))
+ (let ((cb (callback-recover self ,(intern (symbol-name event) :keyword))))
+ (funcall cb self widget event data)))))
(def-gtk-event-handler clicked)
(def-gtk-event-handler toggled)
@@ -203,8 +207,13 @@
,@body t)))
#-clisp
`(lambda (self ,widg ,event ,data)
- (declare (ignorable self ,widg ,event ,data))
- ,@body t))
+ (declare (ignorable self ,widg ,event ,data))
+ (print (list :callback self ,widg ,event ,data))
+ (prog1
+ (progn
+ ,@body
+ 1) ;; a boolean which indicates, IIRC, "handled"
+ #+shhh (print (list :callback-finis self ,widg ,event ,data)))))
(defmacro callback-if (condition (widg event data) &body body)
`(c? (and ,condition
@@ -213,18 +222,22 @@
,@body t))
#-clisp (lambda (self ,widg ,event ,data)
(declare (ignorable self ,widg ,event ,data))
- ,@body t))))
+ (print (list :callback self ,widg ,event ,data))
+ ,@body
+ 1))))
(ff-defun-callable :cdecl :int timeout-handler-callback
((data (* :void)))
+ (print :timeout-handler-callback)
(let ((id (elti data 0)))
(gtk-global-callback-funcall id)))
(defun timeout-add (milliseconds function)
(let ((id (gtk-global-callback-register
(lambda ()
- (with-gdk-threads
- (funcall function)))))
+ (print :timeout-add-global)
+ (with-gdk-threads
+ (funcall function)))))
(c-id (fgn-alloc :int 1)))
(setf (elti c-id 0) id)
(g-timeout-add milliseconds (ff-register-callable 'timeout-handler-callback) c-id)))