chiark / gitweb /
Misc changes to make it easier to configure the build process
[clg] / gtk / gtkwidget.lisp
CommitLineData
0d07716f 1;; Common Lisp bindings for GTK+ v2.0
dd392521 2;; Copyright (C) 2000-2001 Espen S. Johnsen <espen@users.sourceforge.net>
0d07716f 3;;
4;; This library is free software; you can redistribute it and/or
5;; modify it under the terms of the GNU Lesser General Public
6;; License as published by the Free Software Foundation; either
7;; version 2 of the License, or (at your option) any later version.
8;;
9;; This library is distributed in the hope that it will be useful,
10;; but WITHOUT ANY WARRANTY; without even the implied warranty of
11;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12;; Lesser General Public License for more details.
13;;
14;; You should have received a copy of the GNU Lesser General Public
15;; License along with this library; if not, write to the Free Software
16;; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17
dd392521 18;; $Id: gtkwidget.lisp,v 1.5 2001/10/21 23:22:04 espen Exp $
0d07716f 19
20(in-package "GTK")
21
22
0d07716f 23(defmethod initialize-instance ((widget widget) &rest initargs &key parent)
24 (declare (ignore initargs))
08aad4db 25 (call-next-method)
dd392521 26 (when parent
27 (let ((parent-widget (first (mklist parent)))
28 (args (rest (mklist parent))))
29 (apply #'container-add parent-widget widget args))))
30
31(defmethod initialize-instance :after ((widget widget) &rest initargs
32 &key show-all)
33 (declare (ignore initargs))
34 (when show-all
35 (widget-show-all widget)))
0d07716f 36
37
dd392521 38(defmethod slot-unbound ((class gobject-class) (object widget) slot)
0d07716f 39 (cond
40 ((and (eq slot 'child-slots) (slot-value object 'parent))
41 (with-slots (parent child-slots) object
42 (setf
43 child-slots
44 (make-instance
08aad4db 45 (gethash (class-of parent) *container-to-child-class-mappings*)
0d07716f 46 :parent parent :child object))))
47 (t (call-next-method))))
48
49
50(defun child-slot-value (widget slot)
51 (slot-value (widget-child-slots widget) slot))
52
53(defun (setf child-slot-value) (value widget slot)
54 (setf (slot-value (widget-child-slots widget) slot) value))
55
56(defmacro with-child-slots (slots widget &body body)
57 `(with-slots ,slots (widget-child-slots ,widget)
58 ,@body))
59
60(defmacro widget-destroyed (place)
61 `(setf ,place nil))
62
08aad4db 63(defbinding widget-destroy () nil
0d07716f 64 (widget widget))
65
08aad4db 66(defbinding widget-unparent () nil
0d07716f 67 (widget widget))
68
08aad4db 69(defbinding widget-show () nil
0d07716f 70 (widget widget))
71
08aad4db 72(defbinding widget-show-now () nil
0d07716f 73 (widget widget))
74
08aad4db 75(defbinding widget-hide () nil
0d07716f 76 (widget widget))
77
08aad4db 78(defbinding widget-show-all () nil
0d07716f 79 (widget widget))
80
08aad4db 81(defbinding widget-hide-all () nil
0d07716f 82 (widget widget))
83
08aad4db 84(defbinding widget-map () nil
0d07716f 85 (widget widget))
86
08aad4db 87(defbinding widget-unmap () nil
0d07716f 88 (widget widget))
89
08aad4db 90(defbinding widget-realize () nil
0d07716f 91 (widget widget))
92
08aad4db 93(defbinding widget-unrealize () nil
0d07716f 94 (widget widget))
95
08aad4db 96(defbinding widget-add-accelerator
0d07716f 97 (widget signal accel-group key modifiers flags) nil
98 (widget widget)
99 ((name-to-string signal) string)
100 (accel-group accel-group)
101 ((gdk:keyval-from-name key) unsigned-int)
102 (modifiers gdk:modifier-type)
103 (flags accel-flags))
104
08aad4db 105(defbinding widget-remove-accelerator
0d07716f 106 (widget accel-group key modifiers) nil
107 (widget widget)
108 (accel-group accel-group)
109 ((gdk:keyval-from-name key) unsigned-int)
110 (modifiers gdk:modifier-type))
111
08aad4db 112(defbinding widget-accelerator-signal
0d07716f 113 (widget accel-group key modifiers) unsigned-int
114 (widget widget)
115 (accel-group accel-group)
116 ((gdk:keyval-from-name key) unsigned-int)
117 (modifiers gdk:modifier-type))
118
08aad4db 119(defbinding widget-lock-accelerators () nil
0d07716f 120 (widget widget))
121
08aad4db 122(defbinding widget-unlock-accelerators () nil
0d07716f 123 (widget widget))
124
08aad4db 125(defbinding (widget-accelerators-locked-p "gtk_widget_accelerators_locked")
126 () boolean
0d07716f 127 (widget widget))
128
08aad4db 129(defbinding widget-event () int
0d07716f 130 (widget widget)
131 (event gdk:event))
132
08aad4db 133(defbinding get-event-widget () widget
13148f19 134 (event gdk:event))
135
08aad4db 136(defbinding widget-activate () boolean
0d07716f 137 (widget widget))
138
08aad4db 139(defbinding widget-set-scroll-adjustments () boolean
0d07716f 140 (widget widget)
141 (hadjustment adjustment)
142 (vadjustment adjustment))
143
08aad4db 144(defbinding widget-reparent () nil
0d07716f 145 (widget widget)
146 (new-parent widget))
147
08aad4db 148; (defbinding widget-popup () nil
149; (widget widget)
150; (x int)
151; (y int))
0d07716f 152
08aad4db 153(defbinding widget-grab-focus () nil
0d07716f 154 (widget widget))
155
08aad4db 156(defbinding widget-grab-default () nil
0d07716f 157 (widget widget))
158
08aad4db 159(defbinding grab-add () nil
13148f19 160 (widget widget))
161
08aad4db 162(defbinding grab-get-current () widget)
13148f19 163
08aad4db 164(defbinding grab-remove () nil
13148f19 165 (widget widget))
166
08aad4db 167(defbinding widget-allocation () nil
0d07716f 168 (widget widget)
169 (width int :out)
170 (height int :out))
171
08aad4db 172(defbinding widget-add-events () nil
0d07716f 173 (widget widget)
174 (events gdk:event-mask))
175
08aad4db 176(defbinding (widget-toplevel "gtk_widget_get_toplevel") () widget
0d07716f 177 (widget widget))
178
08aad4db 179(defbinding (widget-ancestor "gtk_widget_get_ancestor") (widget type) widget
0d07716f 180 (widget widget)
181 ((find-type-number type) type-number))
182
08aad4db 183(defbinding (widget-pointer "gtk_widget_get_pointer") () nil
0d07716f 184 (widget widget)
185 (x int :out)
186 (y int :out))
187
08aad4db 188(defbinding (widget-is-ancestor-p "gtk_widget_is_ancestor") () boolean
0d07716f 189 (widget widget)
190 (ancestor widget))
191
08aad4db 192(defbinding widget-ensure-style () nil
0d07716f 193 (widget widget))
194
08aad4db 195(defbinding widget-reset-rc-styles () nil
0d07716f 196 (widget widget))
197
198(defun (setf widget-cursor) (cursor-type widget)
199 (let ((cursor (gdk:cursor-new cursor-type))
200 (window (widget-window widget)))
201 (gdk:window-set-cursor window cursor)
202 ;(gdk:cursor-destroy cursor)
203 ))
204
205;; Push/pop pairs, to change default values upon a widget's creation.
206;; This will override the values that got set by the
207;; widget-set-default-* functions.
208
08aad4db 209(defbinding widget-push-colormap () nil
0d07716f 210 (colormap gdk:colormap))
211
08aad4db 212(defbinding widget-push-composite-child () nil)
0d07716f 213
08aad4db 214(defbinding widget-pop-colormap () nil)
0d07716f 215
08aad4db 216(defbinding widget-pop-composite-child () nil)
0d07716f 217
218
219;; Set certain default values to be used at widget creation time.
220
08aad4db 221(defbinding widget-set-default-colormap () nil
0d07716f 222 (colormap gdk:colormap))
223
08aad4db 224(defbinding widget-get-default-style () style)
0d07716f 225
08aad4db 226(defbinding widget-get-default-colormap () gdk:colormap)
0d07716f 227
08aad4db 228(defbinding widget-shape-combine-mask () nil
0d07716f 229 (widget widget)
230 (shape-mask gdk:bitmap)
231 (x-offset int)
232 (y-offset int))
233
13148f19 234;; defined in gtkglue.c
08aad4db 235(defbinding widget-mapped-p () boolean
0d07716f 236 (widget widget))
237