55212af1 |
1 | ;; Common Lisp bindings for GTK+ v2.x |
2 | ;; Copyright 2000-2005 Espen S. Johnsen <espen@users.sf.net> |
0d07716f |
3 | ;; |
55212af1 |
4 | ;; Permission is hereby granted, free of charge, to any person obtaining |
5 | ;; a copy of this software and associated documentation files (the |
6 | ;; "Software"), to deal in the Software without restriction, including |
7 | ;; without limitation the rights to use, copy, modify, merge, publish, |
8 | ;; distribute, sublicense, and/or sell copies of the Software, and to |
9 | ;; permit persons to whom the Software is furnished to do so, subject to |
10 | ;; the following conditions: |
0d07716f |
11 | ;; |
55212af1 |
12 | ;; The above copyright notice and this permission notice shall be |
13 | ;; included in all copies or substantial portions of the Software. |
0d07716f |
14 | ;; |
55212af1 |
15 | ;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
16 | ;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
17 | ;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. |
18 | ;; IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY |
19 | ;; CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, |
20 | ;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE |
21 | ;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
22 | |
78dc8487 |
23 | ;; $Id: gdk.lisp,v 1.18 2005/11/10 09:01:36 espen Exp $ |
0d07716f |
24 | |
25 | |
26 | (in-package "GDK") |
27 | |
e295d6df |
28 | ;;; Initialization |
29 | |
30 | (defbinding (gdk-init "gdk_parse_args") () nil |
31 | "Initializes the library without opening the display." |
32 | (nil null) |
33 | (nil null)) |
0d07716f |
34 | |
0d07716f |
35 | |
e295d6df |
36 | |
a05a0e59 |
37 | ;;; Display |
e295d6df |
38 | |
39 | (defbinding %display-open () display |
40 | (display-name (or null string))) |
41 | |
42 | (defun display-open (&optional display-name) |
43 | (let ((display (%display-open display-name))) |
44 | (unless (display-get-default) |
45 | (display-set-default display)) |
46 | display)) |
47 | |
a05a0e59 |
48 | (defbinding %display-get-n-screens () int |
49 | (display display)) |
50 | |
51 | (defbinding %display-get-screen () screen |
52 | (display display) |
53 | (screen-num int)) |
54 | |
55 | (defun display-screens (&optional (display (display-get-default))) |
56 | (loop |
57 | for i from 0 below (%display-get-n-screens display) |
58 | collect (%display-get-screen display i))) |
59 | |
60 | (defbinding display-get-default-screen |
61 | (&optional (display (display-get-default))) screen |
62 | (display display)) |
63 | |
64 | (defbinding display-beep (&optional (display (display-get-default))) nil |
65 | (display display)) |
66 | |
67 | (defbinding display-sync (&optional (display (display-get-default))) nil |
68 | (display display)) |
69 | |
70 | (defbinding display-flush (&optional (display (display-get-default))) nil |
71 | (display display)) |
72 | |
73 | (defbinding display-close (&optional (display (display-get-default))) nil |
74 | (display display)) |
75 | |
76 | (defbinding display-get-event |
77 | (&optional (display (display-get-default))) event |
78 | (display display)) |
79 | |
80 | (defbinding display-peek-event |
81 | (&optional (display (display-get-default))) event |
82 | (display display)) |
83 | |
84 | (defbinding display-put-event |
85 | (event &optional (display (display-get-default))) event |
86 | (display display) |
87 | (event event)) |
88 | |
e295d6df |
89 | (defbinding (display-connection-number "clg_gdk_connection_number") |
90 | (&optional (display (display-get-default))) int |
91 | (display display)) |
92 | |
93 | |
a05a0e59 |
94 | |
95 | ;;; Display manager |
96 | |
97 | (defbinding display-get-default () display) |
98 | |
99 | (defbinding (display-manager "gdk_display_manager_get") () display-manager) |
100 | |
101 | (defbinding (display-set-default "gdk_display_manager_set_default_display") |
102 | (display) nil |
103 | ((display-manager) display-manager) |
104 | (display display)) |
105 | |
106 | |
107 | |
e295d6df |
108 | ;;; Events |
0d07716f |
109 | |
5515cd18 |
110 | (defbinding (events-pending-p "gdk_events_pending") () boolean) |
0d07716f |
111 | |
5515cd18 |
112 | (defbinding event-get () event) |
0d07716f |
113 | |
5515cd18 |
114 | (defbinding event-peek () event) |
0d07716f |
115 | |
5515cd18 |
116 | (defbinding event-get-graphics-expose () event |
0d07716f |
117 | (window window)) |
118 | |
5515cd18 |
119 | (defbinding event-put () event |
0d07716f |
120 | (event event)) |
121 | |
5515cd18 |
122 | ;(defbinding event-handler-set () ...) |
0d07716f |
123 | |
5515cd18 |
124 | (defbinding set-show-events () nil |
0d07716f |
125 | (show-events boolean)) |
126 | |
5515cd18 |
127 | (defbinding get-show-events () boolean) |
0d07716f |
128 | |
0d07716f |
129 | |
a05a0e59 |
130 | ;;; Miscellaneous functions |
0d07716f |
131 | |
a05a0e59 |
132 | (defbinding screen-width () int) |
133 | (defbinding screen-height () int) |
0d07716f |
134 | |
a05a0e59 |
135 | (defbinding screen-width-mm () int) |
136 | (defbinding screen-height-mm () int) |
0d07716f |
137 | |
a05a0e59 |
138 | (defbinding pointer-grab |
139 | (window &key owner-events events confine-to cursor time) grab-status |
0d07716f |
140 | (window window) |
141 | (owner-events boolean) |
a05a0e59 |
142 | (events event-mask) |
0d07716f |
143 | (confine-to (or null window)) |
144 | (cursor (or null cursor)) |
4a098e36 |
145 | ((or time 0) (unsigned 32))) |
0d07716f |
146 | |
a05a0e59 |
147 | (defbinding (pointer-ungrab "gdk_display_pointer_ungrab") |
4a098e36 |
148 | (&optional time (display (display-get-default))) nil |
a05a0e59 |
149 | (display display) |
4a098e36 |
150 | ((or time 0) (unsigned 32))) |
0d07716f |
151 | |
a05a0e59 |
152 | (defbinding (pointer-is-grabbed-p "gdk_display_pointer_is_grabbed") |
153 | (&optional (display (display-get-default))) boolean) |
154 | |
155 | (defbinding keyboard-grab (window &key owner-events time) grab-status |
0d07716f |
156 | (window window) |
157 | (owner-events boolean) |
4a098e36 |
158 | ((or time 0) (unsigned 32))) |
0d07716f |
159 | |
a05a0e59 |
160 | (defbinding (keyboard-ungrab "gdk_display_keyboard_ungrab") |
4a098e36 |
161 | (&optional time (display (display-get-default))) nil |
a05a0e59 |
162 | (display display) |
4a098e36 |
163 | ((or time 0) (unsigned 32))) |
0d07716f |
164 | |
0d07716f |
165 | |
0d07716f |
166 | |
596c3078 |
167 | (defbinding atom-intern (atom-name &optional only-if-exists) atom |
168 | ((string atom-name) string) |
169 | (only-if-exists boolean)) |
170 | |
171 | (defbinding atom-name () string |
172 | (atom atom)) |
173 | |
0d07716f |
174 | |
175 | |
176 | ;;; Visuals |
177 | |
5515cd18 |
178 | (defbinding visual-get-best-depth () int) |
0d07716f |
179 | |
5515cd18 |
180 | (defbinding visual-get-best-type () visual-type) |
0d07716f |
181 | |
5515cd18 |
182 | (defbinding visual-get-system () visual) |
0d07716f |
183 | |
184 | |
5515cd18 |
185 | (defbinding (%visual-get-best-with-nothing "gdk_visual_get_best") () visual) |
0d07716f |
186 | |
5515cd18 |
187 | (defbinding %visual-get-best-with-depth () visual |
0d07716f |
188 | (depth int)) |
189 | |
5515cd18 |
190 | (defbinding %visual-get-best-with-type () visual |
0d07716f |
191 | (type visual-type)) |
192 | |
5515cd18 |
193 | (defbinding %visual-get-best-with-both () visual |
0d07716f |
194 | (depth int) |
195 | (type visual-type)) |
196 | |
197 | (defun visual-get-best (&key depth type) |
198 | (cond |
199 | ((and depth type) (%visual-get-best-with-both depth type)) |
200 | (depth (%visual-get-best-with-depth depth)) |
201 | (type (%visual-get-best-with-type type)) |
202 | (t (%visual-get-best-with-nothing)))) |
203 | |
5515cd18 |
204 | ;(defbinding query-depths ..) |
0d07716f |
205 | |
5515cd18 |
206 | ;(defbinding query-visual-types ..) |
0d07716f |
207 | |
5515cd18 |
208 | (defbinding list-visuals () (glist visual)) |
0d07716f |
209 | |
210 | |
211 | ;;; Windows |
212 | |
5515cd18 |
213 | (defbinding window-destroy () nil |
0d07716f |
214 | (window window)) |
215 | |
216 | |
64780167 |
217 | (defbinding window-at-pointer () window |
218 | (x int :out) |
219 | (y int :out)) |
0d07716f |
220 | |
5515cd18 |
221 | (defbinding window-show () nil |
0d07716f |
222 | (window window)) |
223 | |
64780167 |
224 | (defbinding window-show-unraised () nil |
225 | (window window)) |
226 | |
5515cd18 |
227 | (defbinding window-hide () nil |
0d07716f |
228 | (window window)) |
229 | |
64780167 |
230 | (defbinding window-is-visible-p () boolean |
231 | (window window)) |
232 | |
233 | (defbinding window-is-viewable-p () boolean |
234 | (window window)) |
235 | |
5515cd18 |
236 | (defbinding window-withdraw () nil |
0d07716f |
237 | (window window)) |
238 | |
64780167 |
239 | (defbinding window-iconify () nil |
240 | (window window)) |
241 | |
242 | (defbinding window-deiconify () nil |
243 | (window window)) |
244 | |
245 | (defbinding window-stick () nil |
246 | (window window)) |
247 | |
248 | (defbinding window-unstick () nil |
249 | (window window)) |
250 | |
251 | (defbinding window-maximize () nil |
252 | (window window)) |
253 | |
254 | (defbinding window-unmaximize () nil |
255 | (window window)) |
256 | |
257 | (defbinding window-fullscreen () nil |
258 | (window window)) |
259 | |
260 | (defbinding window-unfullscreen () nil |
261 | (window window)) |
262 | |
263 | (defbinding window-set-keep-above () nil |
264 | (window window) |
265 | (setting boolean)) |
266 | |
267 | (defbinding window-set-keep-below () nil |
268 | (window window) |
269 | (setting boolean)) |
270 | |
5515cd18 |
271 | (defbinding window-move () nil |
0d07716f |
272 | (window window) |
273 | (x int) |
274 | (y int)) |
275 | |
5515cd18 |
276 | (defbinding window-resize () nil |
0d07716f |
277 | (window window) |
278 | (width int) |
279 | (height int)) |
280 | |
5515cd18 |
281 | (defbinding window-move-resize () nil |
0d07716f |
282 | (window window) |
283 | (x int) |
284 | (y int) |
285 | (width int) |
286 | (height int)) |
287 | |
64780167 |
288 | (defbinding window-scroll () nil |
289 | (window window) |
290 | (dx int) |
291 | (dy int)) |
292 | |
5515cd18 |
293 | (defbinding window-reparent () nil |
0d07716f |
294 | (window window) |
295 | (new-parent window) |
296 | (x int) |
297 | (y int)) |
298 | |
5515cd18 |
299 | (defbinding window-clear () nil |
0d07716f |
300 | (window window)) |
301 | |
64780167 |
302 | (defbinding %window-clear-area () nil |
0d07716f |
303 | (window window) |
304 | (x int) (y int) (width int) (height int)) |
305 | |
64780167 |
306 | (defbinding %window-clear-area-e () nil |
0d07716f |
307 | (window window) |
308 | (x int) (y int) (width int) (height int)) |
309 | |
310 | (defun window-clear-area (window x y width height &optional expose) |
311 | (if expose |
64780167 |
312 | (%window-clear-area-e window x y width height) |
313 | (%window-clear-area window x y width height))) |
0d07716f |
314 | |
5515cd18 |
315 | (defbinding window-raise () nil |
0d07716f |
316 | (window window)) |
317 | |
5515cd18 |
318 | (defbinding window-lower () nil |
0d07716f |
319 | (window window)) |
320 | |
64780167 |
321 | (defbinding window-focus () nil |
322 | (window window) |
323 | (timestamp unsigned-int)) |
324 | |
325 | (defbinding window-register-dnd () nil |
326 | (window window)) |
327 | |
328 | (defbinding window-begin-resize-drag () nil |
329 | (window window) |
330 | (edge window-edge) |
331 | (button int) |
332 | (root-x int) |
333 | (root-y int) |
334 | (timestamp unsigned-int)) |
335 | |
336 | (defbinding window-begin-move-drag () nil |
337 | (window window) |
338 | (button int) |
339 | (root-x int) |
340 | (root-y int) |
341 | (timestamp unsigned-int)) |
342 | |
343 |