X-Git-Url: https://git.distorted.org.uk/~mdw/clg/blobdiff_plain/60e5d93717c275307c88ff03cca7492e8c775d72..1dd03ab890afaadc72d47b304574ae9cfcbd091a:/gtk/gtk.lisp diff --git a/gtk/gtk.lisp b/gtk/gtk.lisp index 85eced1..9e39a26 100644 --- a/gtk/gtk.lisp +++ b/gtk/gtk.lisp @@ -15,7 +15,7 @@ ;; License along with this library; if not, write to the Free Software ;; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -;; $Id: gtk.lisp,v 1.19 2004-11-21 17:39:27 espen Exp $ +;; $Id: gtk.lisp,v 1.23 2004-12-20 20:00:07 espen Exp $ (in-package "GTK") @@ -321,11 +321,12 @@ ;;;; Dialog -(defmethod shared-initialize ((dialog dialog) names &rest initargs &key button) - (declare (ignore button)) - (call-next-method) - (dolist (button-definition (get-all initargs :button)) - (apply #'dialog-add-button dialog (mklist button-definition)))) +(defmethod shared-initialize ((dialog dialog) names &rest initargs + &key button buttons) + (declare (ignore button buttons)) + (prog1 + (call-next-method) + (initial-apply-add dialog #'dialog-add-button initargs :button :buttons))) (defvar %*response-id-key* (gensym)) @@ -452,7 +453,12 @@ -;;; Drawing area -- no functions +;;; Drawing area + +(defbinding drawing-area-get-size () nil + (drawing-area drawing-area) + (width int :out) + (height int :out)) ;;; Entry @@ -650,6 +656,15 @@ ;;; Window +(defmethod initialize-instance ((window window) &rest initargs + &key accel-group accel-groups) + (declare (ignore accel-group accel-groups)) + (prog1 + (call-next-method) + (initial-add window #'window-add-accel-group + initargs :accel-group :accel-groups))) + + (defbinding window-set-wmclass () nil (window window) (wmclass-name string) @@ -676,7 +691,8 @@ ;(defbinding window-set-geometry-hints) -(defbinding window-list-toplevels () (glist window)) +(defbinding window-list-toplevels () (glist (copy-of window)) + "Returns a list of all existing toplevel windows.") (defbinding window-add-mnemonic (window key target) nil (window window) @@ -1027,27 +1043,6 @@ (resize boolean) (shrink boolean)) -(defun (setf paned-child1) (child paned) - (paned-pack1 paned child nil t) - child) - -(defun (setf paned-child2) (child paned) - (paned-pack2 paned child t t) - child) - -;; Defined in gtkglue.c -(defbinding paned-child1 () widget - (paned paned) - (resize boolean :out) - (shrink boolean :out)) - -;; Defined in gtkglue.c -(defbinding paned-child2 () widget - (paned paned) - (resize boolean :out) - (shrink boolean :out)) - - ;;; Layout @@ -1170,17 +1165,16 @@ (columns unsigned-int)) (defbinding table-attach (table child left right top bottom - &key (x-options '(:expand :fill)) - (y-options '(:expand :fill)) - (x-padding 0) (y-padding 0)) nil + &key options x-options y-options + (x-padding 0) (y-padding 0)) nil (table table) (child widget) (left unsigned-int) (right unsigned-int) (top unsigned-int) (bottom unsigned-int) - (x-options attach-options) - (y-options attach-options) + ((append (mklist options) (mklist x-options)) attach-options) + ((append (mklist options) (mklist y-options)) attach-options) (x-padding unsigned-int) (y-padding unsigned-int)) @@ -1494,14 +1488,57 @@ (progress-bar progress-bar)) +;;; Size group + +(defmethod initialize-instance ((size-group size-group) &rest initargs + &key widget widgets) + (declare (ignore widget widgets)) + (prog1 + (call-next-method) + (initial-add size-group #'size-group-add-widget + initargs :widget :widgets))) + + +(defbinding size-group-add-widget () nil + (size-group size-group) + (widget widget)) + +(defbinding size-group-remove-widget () nil + (size-group size-group) + (widget widget)) + ;;; Stock items -(defbinding stock-lookup () boolean +(defbinding %stock-item-copy () pointer + (location pointer)) + +(defbinding %stock-item-free () nil + (location pointer)) + +(defmethod reference-foreign ((class (eql (find-class 'stock-item))) location) + (%stock-item-copy location)) + +(defmethod unreference-foreign ((class (eql (find-class 'stock-item))) location) + (%stock-item-free location)) + +(defbinding stock-add (stock-item) nil + (stock-item stock-item) + (1 unsigned-int)) + +(defbinding stock-list-ids () (gslist string)) + +(defbinding %stock-lookup () boolean (stock-id string) - ((make-instance 'stock-item) stock-item :return)) - + (location pointer)) +(defun stock-lookup (stock-id) + (let ((location + (allocate-memory (proxy-instance-size (find-class 'stock-item))))) + (unwind-protect + (when (%stock-lookup stock-id location) + (ensure-proxy-instance 'stock-item (%stock-item-copy location))) + (deallocate-memory location)))) ;;; Tooltips @@ -1548,22 +1585,6 @@ ;;; Accelerator Groups #| -(defbinding accel-group-get-default () accel-group) - -(deftype-method alien-ref accel-group (type-spec) - (declare (ignore type-spec)) - '%accel-group-ref) - -(deftype-method alien-unref accel-group (type-spec) - (declare (ignore type-spec)) - '%accel-group-unref) - -(defbinding %accel-group-ref () accel-group - (accel-group (or accel-group pointer))) - -(defbinding %accel-group-unref () nil - (accel-group (or accel-group pointer))) - (defbinding accel-group-activate (accel-group key modifiers) boolean (accel-group accel-group) ((gdk:keyval-from-name key) unsigned-int)