chiark / gitweb /
Removed some obsoleted types
[clg] / gtk / gtk.lisp
CommitLineData
560af5c5 1;; Common Lisp bindings for GTK+ v2.0
2;; Copyright (C) 1999-2000 Espen S. Johnsen <espejohn@online.no>
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
f36ca6af 18;; $Id: gtk.lisp,v 1.2 2000-09-04 22:23:34 espen Exp $
560af5c5 19
20
21(in-package "GTK")
22
23;;; Gtk version
24
25(define-foreign check-version () string
26 (required-major unsigned-int)
27 (required-minor unsigned-int)
28 (required-micro unsigned-int))
29
30(define-foreign query-version () nil
31 (major unsigned-int :out)
32 (minor unsigned-int :out)
33 (micro unsigned-int :out))
34
35(defun gtk-version ()
36 (multiple-value-bind (major minor micro)
37 (query-version)
38 (if (zerop micro)
39 (format nil "Gtk+ v~A.~A" major minor)
40 (format nil "Gtk+ v~A.~A.~A" major minor micro))))
41
560af5c5 42
43
44;;; should be moved to gobject
45
560af5c5 46
47
48;;; Label
49
50(define-foreign label-new () label
51 (text string))
52
53(define-foreign label-parse-uline () unsigned-int
54 (label label)
55 (string string))
56
57
58
59;;; Acccel label
60
61(define-foreign accel-label-new () accel-label
62 (text string))
63
64(define-foreign accel-label-refetch () boolean
65 (accel-label accel-label))
66
67
68
69;;; Tips query
70
71(define-foreign tips-query-new () tips-query)
72
73(define-foreign tips-query-start-query () nil
74 (tips-query tips-query))
75
76(define-foreign tips-query-stop-query () nil
77 (tips-query tips-query))
78
79
80
81;;; Arrow
82
83(define-foreign arrow-new () arrow
84 (arrow-type arrow-type)
85 (shadow-type shadow-type))
86
87
88
89;;; Pixmap
90
f36ca6af 91(defmethod initialize-instance ((pixmap pixmap) &rest initargs
92 &key source mask)
93 (declare (ignore initargs))
94 (call-next-method)
95 (if (typep source 'gdk:pixmap)
96 (pixmap-set pixmap source mask)
97 (multiple-value-bind (source mask) (gdk:pixmap-create source)
98 (pixmap-set pixmap source mask))))
560af5c5 99
f36ca6af 100(defun pixmap-new (source &optional mask)
101 (make-instance 'pixmap :source source :mask mask))
560af5c5 102
f36ca6af 103(define-foreign pixmap-set () nil
560af5c5 104 (pixmap pixmap)
f36ca6af 105 (source gdk:pixmap)
560af5c5 106 (mask (or null gdk:bitmap)))
107
f36ca6af 108(defun (setf pixmap-source) (source pixmap)
109 (if (typep source 'gdk:pixmap)
110 (pixmap-set pximap source (pixmap-mask pixmap))
111 (multiple-value-bind (source mask) (gdk:pixmap-create source)
112 (pixmap-set pixmap source mask)))
113 source)
560af5c5 114
f36ca6af 115(defun (setf pixmap-mask) (mask pixmap)
116 (pixmap-set pximap (pixmap-source pixmap) mask)
117 mask)
118
119(define-foreign ("gtk_pixmap_get" pixmap-source) () nil
560af5c5 120 (pixmap pixmap)
121 (val gdk:pixmap :out)
f36ca6af 122 (nil null))
123
124(define-foreign ("gtk_pixmap_get" pixmap-mask) () nil
125 (pixmap pixmap)
126 (nil null)
560af5c5 127 (mask gdk:bitmap :out))
128
129
130
131;;; Bin
132
133(defun bin-child (bin)
134 (first (container-children bin)))
135
136(defun (setf bin-child) (child bin)
137 (let ((old-child (bin-child bin)))
138 (when old-child
139 (container-remove bin old-child)))
140 (container-add bin child)
141 child)
142
143
f36ca6af 144
560af5c5 145;;; Alignment
146
147(define-foreign alignment-new () alignment
148 (xalign single-float)
149 (ylign single-float)
150 (xscale single-float)
151 (yscale single-float))
152
153
154
155;;; Frame
156
157(define-foreign frame-new (&optional label) frame
158 (label string))
159
160
161
162;;; Aspect frame
163
164(define-foreign aspect-frame-new () alignment
165 (xalign single-float)
166 (ylign single-float)
167 (ratio single-float)
168 (obey-child boolean))
169
170
171
172;;; Button
173
174(define-foreign %button-new () button)
175
176(define-foreign %button-new-with-label () button
177 (label string))
178
179(defun button-new (&optional label)
180 (if label
181 (%button-new-with-label label)
182 (%button-new)))
183
f36ca6af 184(defgeneric button-label (button))
185(defgeneric (setf button-label) (label button))
186
187(defmethod button-label ((button button))
188 (object-arg button "GtkButton::label"))
189
190(defmethod (setf button-label) ((label string) (button button))
191 (setf (object-arg button "GtkButton::label") label))
192
193
560af5c5 194(define-foreign button-pressed () nil
195 (button button))
196
197(define-foreign button-released () nil
198 (button button))
199
200(define-foreign button-clicked () nil
201 (button button))
202
203(define-foreign button-enter () nil
204 (button button))
205
206(define-foreign button-leave () nil
207 (button button))
208
209
210
211;;; Toggle button
212
213(define-foreign %toggle-button-new () toggle-button)
214
215(define-foreign %toggle-button-new-with-label () toggle-button
216 (label string))
217
218(defun toggle-button-new (&optional label)
219 (if label
220 (%toggle-button-new-with-label label)
221 (%toggle-button-new)))
222
223(define-foreign toggle-button-toggled () nil
224 (toggle-button toggle-button))
225
226
227
228;;; Check button
229
230(define-foreign %check-button-new () check-button)
231
232(define-foreign %check-button-new-with-label () check-button
233 (label string))
234
235(defun check-button-new (&optional label)
236 (if label
237 (%check-button-new-with-label label)
238 (%check-button-new)))
239
f36ca6af 240(defmethod (setf button-label) ((label string) (button check-button))
241 (call-next-method)
242 (setf (misc-xalign (bin-child button)) 0.0)
243 label)
244
560af5c5 245
246
247;;; Radio button
248
249(define-foreign %radio-button-new () radio-button
250 (group (or null radio-button-group)))
251
252(define-foreign %radio-button-new-with-label-from-widget () radio-button
253 (widget (or null widget))
254 (label string))
255
256(define-foreign %radio-button-new-from-widget () radio-button
257 (widget (or null widget)))
258
259(define-foreign %radio-button-new-with-label () radio-button
260 (group (or null radio-button-group))
261 (label string))
262
263(defun radio-button-new (group &key label from-widget)
264 (cond
265 ((and from-widget label)
266 (%radio-button-new-with-label-from-widget group label))
267 (from-widget
268 (%radio-button-new-from-widget group))
269 (label
270 (%radio-button-new-with-label group label))
271 (t
272 (%radio-button-new group))))
273
f36ca6af 274; (define-foreign radio-button-group () radio-button-group
275; (radio-button radio-button))
560af5c5 276
277
278
279;;; Option menu
280
f36ca6af 281(define-foreign option-menu-new () option-menu)
560af5c5 282
f36ca6af 283(define-foreign %option-menu-set-menu () nil
284 (option-menu option-menu)
285 (menu widget))
560af5c5 286
f36ca6af 287(define-foreign %option-menu-remove-menu () nil
288 (option-menu option-menu))
560af5c5 289
f36ca6af 290(defun (setf option-menu-menu) (menu option-menu)
291 (if (not menu)
292 (%option-menu-remove-menu option-menu)
293 (%option-menu-set-menu option-menu menu))
294 menu)
560af5c5 295
296
297
298;;; Item
299
300(define-foreign item-select () nil
301 (item item))
302
303(define-foreign item-deselect () nil
304 (item item))
305
306(define-foreign item-toggle () nil
307 (item item))
308
309
310
311;;; Menu item
312
f36ca6af 313(define-foreign %menu-item-new () menu-item)
560af5c5 314
f36ca6af 315(define-foreign %menu-item-new-with-label () menu-item
316 (label string))
560af5c5 317
f36ca6af 318(defun menu-item-new (&optional label)
319 (if label
320 (%menu-item-new-with-label label)
321 (%menu-item-new)))
560af5c5 322
f36ca6af 323(defun (setf menu-item-label) (label menu-item)
324 (make-instance 'accel-label
325 :label label :xalign 0.0 :yalign 0.5 :accel-widget menu-item
326 :visible t :parent menu-item)
327 label)
560af5c5 328
f36ca6af 329(define-foreign %menu-item-set-submenu () nil
330 (menu-item menu-item)
331 (submenu menu))
560af5c5 332
f36ca6af 333(define-foreign %menu-item-remove-submenu () nil
334 (menu-item menu-item))
560af5c5 335
f36ca6af 336(defun (setf menu-item-submenu) (submenu menu-item)
337 (if (not submenu)
338 (%menu-item-remove-submenu menu-item)
339 (%menu-item-set-submenu menu-item submenu))
340 submenu)
560af5c5 341
f36ca6af 342(define-foreign %menu-item-configure () nil
343 (menu-item menu-item)
344 (show-toggle-indicator boolean)
345 (show-submenu-indicator boolean))
560af5c5 346
f36ca6af 347(defun (setf menu-item-toggle-indicator-p) (show menu-item)
348 (%menu-item-configure
349 menu-item
350 show
351 (menu-item-submenu-indicator-p menu-item))
352 show)
560af5c5 353
f36ca6af 354(defun (setf menu-item-submenu-indicator-p) (show menu-item)
355 (%menu-item-configure
356 menu-item
357 (menu-item-toggle-indicator-p menu-item)
358 show))
560af5c5 359
f36ca6af 360(define-foreign menu-item-select () nil
361 (menu-item menu-item))
560af5c5 362
f36ca6af 363(define-foreign menu-item-deselect () nil
364 (menu-item menu-item))
560af5c5 365
f36ca6af 366(define-foreign menu-item-activate () nil
367 (menu-item menu-item))
560af5c5 368
f36ca6af 369(define-foreign menu-item-right-justify () nil
370 (menu-item menu-item))
560af5c5 371
372
373
f36ca6af 374;;; Check menu item
560af5c5 375
f36ca6af 376(define-foreign %check-menu-item-new
377 () check-menu-item)
560af5c5 378
f36ca6af 379(define-foreign %check-menu-item-new-with-label () check-menu-item
380 (label string))
560af5c5 381
f36ca6af 382(defun check-menu-item-new (&optional label)
383 (if label
384 (%check-menu-item-new-with-label label)
385 (%check-menu-item-new)))
560af5c5 386
f36ca6af 387(define-foreign check-menu-item-toggled () nil
388 (check-menu-item check-menu-item))
560af5c5 389
390
391
f36ca6af 392;;; Radio menu item
560af5c5 393
f36ca6af 394(define-foreign %radio-menu-item-new
395 () radio-menu-item
396 (group (or null radio-menu-item-group)))
560af5c5 397
f36ca6af 398(define-foreign %radio-menu-item-new-with-label () radio-menu-item
399 (group (or null radio-menu-item-group))
400 (label string))
560af5c5 401
f36ca6af 402(defun radio-menu-item-new (group &optional label)
403 (if label
404 (%radio-menu-item-new-with-label group label)
405 (%radio-menu-item-new group)))
560af5c5 406
407
408
f36ca6af 409;;; Tearoff menu item
560af5c5 410
f36ca6af 411(define-foreign tearoff-menu-item-new () tearoff-menu-item)
560af5c5 412
413
414
415;;; List item
416
417(define-foreign %list-item-new () list-item)
418
419(define-foreign %list-item-new-with-label () list-item
420 (label string))
421
422(defun list-item-new (&optional label)
423 (if label
424 (%list-item-new-with-label label)
425 (%list-item-new)))
426
427(define-foreign list-item-select () nil
428 (list-item list-item))
429
430(define-foreign list-item-deselect () nil
431 (list-item list-item))
432
433
434
435;;; Tree item
436
437(define-foreign %tree-item-new () tree-item)
438
439(define-foreign %tree-item-new-with-label () tree-item
440 (label string))
441
442(defun tree-item-new (&optional label)
443 (if label
444 (%tree-item-new-with-label label)
445 (%tree-item-new)))
446
447(define-foreign %tree-item-set-subtree () nil
448 (tree-item tree-item)
449 (subtree tree))
450
451(define-foreign %tree-item-remove-subtree () nil
452 (tree-item tree-item))
453
454(defun (setf tree-item-subtree) (subtree tree-item)
455 (if subtree
456 (%tree-item-set-subtree tree-item subtree)
457 (%tree-item-remove-subtree tree-item))
458 subtree)
459
460(define-foreign tree-item-select () nil
461 (tree-item tree-item))
462
463(define-foreign tree-item-deselect () nil
464 (tree-item tree-item))
465
466(define-foreign tree-item-expand () nil
467 (tree-item tree-item))
468
469(define-foreign tree-item-collapse () nil
470 (tree-item tree-item))
471
472
473
474;;; Window
475
476(define-foreign window-new () window
477 (type window-type))
478
479(define-foreign %window-set-wmclass () nil
480 (window window)
481 (wmclass-name string)
482 (wmclass-class string))
483
484(defun (setf window-wmclass) (wmclass window)
485 (%window-set-wmclass window (svref wmclass 0) (svref wmclass 1))
486 (values (svref wmclass 0) (svref wmclass 1)))
487
f36ca6af 488;; gtkglue.c
560af5c5 489(define-foreign window-wmclass () nil
490 (window window)
491 (wmclass-name string :out)
492 (wmclass-class string :out))
493
494(define-foreign window-add-accel-group () nil
495 (window window)
496 (accel-group accel-group))
497
498(define-foreign window-remove-accel-group () nil
499 (window window)
500 (accel-group accel-group))
501
502(define-foreign window-activate-focus () int
503 (window window))
504
505(define-foreign window-activate-default () int
506 (window window))
507
508(define-foreign window-set-transient-for () nil
509 (window window)
510 (parent window))
511
512;(define-foreign window-set-geometry-hints)
513
514
515
516;;; Color selection dialog
517
518; (define-foreign color-selection-dialog-new () color-selection-dialog
519; (title string))
520
521
522
523;;; Dialog
524
f36ca6af 525(define-foreign dialog-new () dialog)
560af5c5 526
527
528
529;;; Input dialog
530
f36ca6af 531(define-foreign input-dialog-new () dialog)
560af5c5 532
533
534
535;;; File selection
536
537; (define-foreign file-selection-new () file-selection
538; (title string))
539
540; (define-foreign file-selection-complete () nil
541; (file-selection file-selection)
542; (pattern string))
543
544; (define-foreign file-selection-show-fileop-buttons () nil
545; (file-selection file-selection))
546
547; (define-foreign file-selection-hide-fileop-buttons () nil
548; (file-selection file-selection))
549
550
551
f36ca6af 552;;; Handle box
560af5c5 553
f36ca6af 554(define-foreign handle-box-new () handle-box)
560af5c5 555
556
557
f36ca6af 558;;; Scrolled window
560af5c5 559
560(define-foreign scrolled-window-new
561 (&optional hadjustment vadjustment) scrolled-window
562 (hadjustment (or null adjustment))
563 (vadjustment (or null adjustment)))
564
565(defun (setf scrolled-window-scrollbar-policy) (policy window)
566 (setf (scrolled-window-hscrollbar-policy window) policy)
567 (setf (scrolled-window-vscrollbar-policy window) policy))
568
569(define-foreign scrolled-window-add-with-viewport () nil
570 (scrolled-window scrolled-window)
571 (child widget))
572
573
574
f36ca6af 575;;; Viewport
560af5c5 576
f36ca6af 577(define-foreign viewport-new () viewport
578 (hadjustment adjustment)
579 (vadjustment adjustment))
560af5c5 580
581
582
583;;; Box
584
585(define-foreign box-pack-start () nil
586 (box box)
587 (child widget)
588 (expand boolean)
589 (fill boolean)
590 (padding unsigned-int))
591
592(define-foreign box-pack-end () nil
593 (box box)
594 (child widget)
595 (expand boolean)
596 (fill boolean)
597 (padding unsigned-int))
598
599(defun box-pack (box child &key (pack :start) (expand t) (fill t) (padding 0))
600 (if (eq pack :start)
601 (box-pack-start box child expand fill padding)
602 (box-pack-end box child expand fill padding)))
603
604(define-foreign box-reorder-child () nil
605 (box box)
606 (child widget)
607 (position int))
608
609(define-foreign box-query-child-packing () nil
610 (box box)
611 (child widget :out)
612 (expand boolean :out)
613 (fill boolean :out)
614 (padding unsigned-int :out)
615 (pack-type pack-type :out))
616
617(define-foreign box-set-child-packing () nil
618 (box box)
619 (child widget)
620 (expand boolean)
621 (fill boolean)
622 (padding unsigned-int)
623 (pack-type pack-type))
624
625
626
627;;; Button box
628
629(define-foreign ("gtk_button_box_get_child_size_default"
630 button-box-default-child-size) () nil
631 (min-width int :out)
632 (min-height int :out))
633
634(define-foreign ("gtk_button_box_get_child_ipadding_default"
635 button-box-default-child-ipadding) () nil
636 (ipad-x int :out)
637 (ipad-y int :out))
638
639(define-foreign %button-box-set-child-size-default () nil
640 (min-width int)
641 (min-height int))
642
643(defun (setf button-box-default-child-size) (size)
644 (%button-box-set-child-size-default (svref size 0) (svref size 1))
645 (values (svref size 0) (svref size 1)))
646
647(define-foreign %button-box-set-child-ipadding-default () nil
648 (ipad-x int)
649 (ipad-y int))
650
651(defun (setf button-box-default-child-ipadding) (ipad)
652 (%button-box-set-child-ipadding-default (svref ipad 0) (svref ipad 1))
653 (values (svref ipad 0) (svref ipad 1)))
654
655(define-foreign
656 ("gtk_button_box_get_child_size" button-box-child-size) () nil
657 (button-box button-box)
658 (min-width int :out)
659 (min-height int :out))
660
661(define-foreign
662 ("gtk_button_box_get_child_ipadding" button-box-child-ipadding) () nil
663 (button-box button-box)
664 (ipad-x int :out)
665 (ipad-y int :out))
666
667(define-foreign %button-box-set-child-size () nil
668 (button-box button-box)
669 (min-width int)
670 (min-height int))
671
672(defun (setf button-box-child-size) (size button-box)
673 (%button-box-set-child-size button-box (svref size 0) (svref size 1))
674 (values (svref size 0) (svref size 1)))
675
676(define-foreign %button-box-set-child-ipadding () nil
677 (button-box button-box)
678 (ipad-x int)
679 (ipad-y int))
680
681(defun (setf button-box-child-ipadding) (ipad button-box)
682 (%button-box-set-child-ipadding button-box (svref ipad 0) (svref ipad 1))
683 (values (svref ipad 0) (svref ipad 1)))
684
685
686
687;;; HButton box
688
f36ca6af 689(define-foreign hbutton-box-new () hbutton-box)
560af5c5 690
691(define-foreign ("gtk_hbutton_box_get_spacing_default"
692 hbutton-box-default-spacing) () int)
693
694(define-foreign ("gtk_hbutton_box_set_spacing_default"
695 (setf hbutton-box-default-spacing)) () nil
696 (spacing int))
697
698(define-foreign ("gtk_hbutton_box_get_layout_default"
699 hbutton-box-default-layout) () button-box-style)
700
701(define-foreign ("gtk_hbutton_box_set_layout_default"
702 (setf hbutton-box-default-layout)) () nil
703 (layout button-box-style))
704
705
706
707;;; VButton Box
708
f36ca6af 709(define-foreign vbutton-box-new () vbutton-box)
560af5c5 710
711(define-foreign ("gtk_vbutton_box_get_spacing_default"
712 vbutton-box-default-spacing) () int)
713
714(define-foreign ("gtk_vbutton_box_set_spacing_default"
715 (setf vbutton-box-default-spacing)) () nil
716 (spacing int))
717
718(define-foreign ("gtk_vbutton_box_get_layout_default"
719 vbutton-box-default-layout) () button-box-style)
720
721(define-foreign ("gtk_vbutton_box_set_layout_default"
722 (setf vbutton-box-default-layout)) () nil
723 (layout button-box-style))
724
725
726
727;;; VBox
728
729(define-foreign vbox-new () vbox
730 (homogeneous boolean)
731 (spacing int))
732
733
734
735;;; Color selection
736
737; (define-foreign color-selection-new () color-selection)
738
f36ca6af 739; ;; gtkglue.c
560af5c5 740; (define-foreign %color-selection-set-color-by-values () nil
741; (colorsel color-selection)
742; (red double-float)
743; (green double-float)
744; (blue double-float)
745; (opacity double-float))
746
747; (defun (setf color-selection-color) (color colorsel)
748; (%color-selection-set-color-by-values
749; colorsel
750; (svref color 0) (svref color 1) (svref color 2)
751; (if (> (length color) 3)
752; (svref color 3)
753; 1.0))
754; color)
755
f36ca6af 756; ;; gtkglue.c
560af5c5 757; (define-foreign %color-selection-get-color-as-values () nil
758; (colorsel color-selection)
759; (red double-float :out)
760; (green double-float :out)
761; (blue double-float :out)
762; (opacity double-float :out))
763
764; (defun color-selection-color (colorsel)
765; (multiple-value-bind (red green blue opacity)
766; (%color-selection-get-color-as-values colorsel)
767; (if (color-selection-use-opacity-p colorsel)
768; (vector red green blue opacity)
769; (vector red green blue))))
770
771
772
773
774; ;;; Gamma curve
775
776; (define-foreign gamma-curve-new () gamma-curve)
777
778
779
780;;; HBox
781
782(define-foreign hbox-new () hbox
783 (homogeneous boolean)
784 (spacing int))
785
786
787
788;;; Combo
789
f36ca6af 790(define-foreign combo-new () combo)
560af5c5 791
f36ca6af 792(define-foreign combo-set-value-in-list () nil
793 (combo combo)
794 (val boolean)
795 (ok-if-empty boolean))
560af5c5 796
797; (define-foreign ("gtk_combo_set_item_string" (setf combo-item-string)) () nil
798; (combo combo)
799; (item item)
800; (item-value string))
801
f36ca6af 802(define-foreign %combo-set-popdown-strings () nil
803 (combo combo)
804 (strings (double-list string)))
560af5c5 805
f36ca6af 806(defun (setf combo-popdown-strings) (strings combo)
807 (%combo-set-popdown-strings combo strings)
808 strings)
560af5c5 809
f36ca6af 810(define-foreign combo-disable-activate () nil
811 (combo combo))
560af5c5 812
560af5c5 813
560af5c5 814
f36ca6af 815;;; Statusbar
560af5c5 816
f36ca6af 817(define-foreign statusbar-new () statusbar)
560af5c5 818
f36ca6af 819(define-foreign
820 ("gtk_statusbar_get_context_id" statusbar-context-id) () unsigned-int
821 (statusbar statusbar)
822 (context-description string))
560af5c5 823
f36ca6af 824(define-foreign statusbar-push () unsigned-int
825 (statusbar statusbar)
826 (context-id unsigned-int)
827 (text string))
560af5c5 828
f36ca6af 829(define-foreign statusbar-pop () nil
830 (statusbar statusbar)
831 (context-id unsigned-int))
560af5c5 832
f36ca6af 833(define-foreign statusbar-remove () nil
834 (statusbar statusbar)
835 (context-id unsigned-int)
836 (message-id unsigned-int))
560af5c5 837
560af5c5 838
839
840;;; Fixed
841
f36ca6af 842(define-foreign fixed-new () fixed)
560af5c5 843
f36ca6af 844(define-foreign fixed-put () nil
845 (fixed fixed)
846 (widget widget)
847 (x (signed 16))
848 (y (signed 16)))
560af5c5 849
f36ca6af 850(define-foreign fixed-move () nil
851 (fixed fixed)
852 (widget widget)
853 (x (signed 16))
854 (y (signed 16)))
560af5c5 855
856
857
858; ;;; Notebook
859
f36ca6af 860(define-foreign notebook-new () notebook)
560af5c5 861
f36ca6af 862(define-foreign ("gtk_notebook_insert_page_menu" notebook-insert-page)
863 (notebook position child tab-label &optional menu-label) nil
864 (notebook notebook)
865 (child widget)
866 ((if (stringp tab-label)
867 (label-new tab-label)
868 tab-label) widget)
869 ((if (stringp menu-label)
870 (label-new menu-label)
871 menu-label) (or null widget))
872 (position int))
560af5c5 873
f36ca6af 874(defun notebook-append-page (notebook child tab-label &optional menu-label)
875 (notebook-insert-page notebook -1 child tab-label menu-label))
560af5c5 876
f36ca6af 877(defun notebook-prepend-page (notebook child tab-label &optional menu-label)
878 (notebook-insert-page notebook 0 child tab-label menu-label))
560af5c5 879
f36ca6af 880(define-foreign notebook-remove-page () nil
881 (notebook notebook)
882 (page-num int))
560af5c5 883
884; (defun notebook-current-page-num (notebook)
885; (let ((page-num (notebook-current-page notebook)))
886; (if (= page-num -1)
887; nil
888; page-num)))
889
f36ca6af 890(define-foreign ("gtk_notebook_get_nth_page" notebook-nth-page-child) () widget
891 (notebook notebook)
892 (page-num int))
560af5c5 893
f36ca6af 894(defun notebook-page-child (notebook)
895 (notebook-nth-page-child notebook (notebook-page notebook)))
560af5c5 896
f36ca6af 897(define-foreign %notebook-page-num () int
898 (notebook notebook)
899 (child widget))
900
901(defun notebook-child-num (notebook child)
902 (let ((page-num (%notebook-page-num notebook child)))
903 (if (= page-num -1)
904 nil
905 page-num)))
906
907(define-foreign notebook-next-page () nil
908 (notebook notebook))
560af5c5 909
f36ca6af 910(define-foreign notebook-prev-page () nil
911 (notebook notebook))
912
913(define-foreign notebook-popup-enable () nil
914 (notebook notebook))
915
916(define-foreign notebook-popup-disable () nil
917 (notebook notebook))
918
919(define-foreign
920 ("gtk_notebook_get_tab_label" notebook-tab-label) (notebook ref) widget
921 (notebook notebook)
922 ((if (typep ref 'widget)
923 ref
924 (notebook-nth-page-child notebook ref))
925 widget))
926
927(define-foreign %notebook-set-tab-label () nil
928 (notebook notebook)
929 (reference widget)
930 (tab-label widget))
931
932(defun (setf notebook-tab-label) (tab-label notebook reference)
933 (let ((tab-label-widget (if (stringp tab-label)
934 (label-new tab-label)
935 tab-label)))
936 (%notebook-set-tab-label
937 notebook
938 (if (typep reference 'widget)
939 reference
940 (notebook-nth-page-child notebook reference))
941 tab-label-widget)
942 (when (stringp tab-label)
943 (widget-unref tab-label-widget))
944 tab-label-widget))
560af5c5 945
f36ca6af 946(define-foreign
947 ("gtk_notebook_get_menu_label" notebook-menu-label) (notebook ref) widget
948 (notebook notebook)
949 ((if (typep ref 'widget)
950 ref
951 (notebook-nth-page-child notebook ref))
952 widget))
953
954(define-foreign %notebook-set-menu-label () nil
955 (notebook notebook)
956 (reference widget)
957 (menu-label widget))
958
959(defun (setf notebook-menu-label) (menu-label notebook reference)
960 (let ((menu-label-widget (if (stringp menu-label)
961 (label-new menu-label)
962 menu-label)))
963 (%notebook-set-menu-label
964 notebook
965 (if (typep reference 'widget)
966 reference
967 (notebook-nth-page-child notebook reference))
968 menu-label-widget)
969 (when (stringp menu-label)
970 (widget-unref menu-label-widget))
971 menu-label-widget))
972
973(define-foreign notebook-query-tab-label-packing (notebook ref) nil
974 (notebook notebook)
975 ((if (typep ref 'widget)
976 ref
977 (notebook-nth-page-child notebook ref))
978 widget)
979 (expand boolean :out)
980 (fill boolean :out)
981 (pack-type pack-type :out))
982
983(define-foreign
984 notebook-set-tab-label-packing (notebook ref expand fill pack-type) nil
985 (notebook notebook)
986 ((if (typep ref 'widget)
987 ref
988 (notebook-nth-page-child notebook ref))
989 widget)
990 (expand boolean)
991 (fill boolean)
992 (pack-type pack-type))
993
994(define-foreign notebook-reorder-child () nil
995 (notebook notebook)
996 (child widget)
997 (position int))
560af5c5 998
999
1000
1001; ;;; Font selection
1002
1003
1004
1005
1006; ;;; Paned
1007
1008; (define-foreign paned-add1 () nil
1009; (paned paned)
1010; (child widget))
1011
1012; (define-foreign paned-add2 () nil
1013; (paned paned)
1014; (child widget))
1015
1016; (define-foreign paned-pack1 () nil
1017; (paned paned)
1018; (child widget)
1019; (resize boolean)
1020; (shrink boolean))
1021
1022; (define-foreign paned-pack2 () nil
1023; (paned paned)
1024; (child widget)
1025; (resize boolean)
1026; (shrink boolean))
1027
1028; ; (define-foreign ("gtk_paned_set_position" (setf paned-position)) () nil
1029; ; (paned paned)
1030; ; (position int))
1031
f36ca6af 1032; ;; gtkglue.c
560af5c5 1033; (define-foreign paned-child1 () widget
1034; (paned paned)
1035; (resize boolean :out)
1036; (shrink boolean :out))
1037
f36ca6af 1038; ;; gtkglue.c
560af5c5 1039; (define-foreign paned-child2 () widget
1040; (paned paned)
1041; (resize boolean :out)
1042; (shrink boolean :out))
1043
1044; (define-foreign vpaned-new () vpaned)
1045
1046; (define-foreign hpaned-new () hpaned)
1047
1048
1049
1050; ;;; Layout
1051
1052; (define-foreign layout-new (&optional hadjustment vadjustment) layout
1053; (hadjustment (or null adjustment))
1054; (vadjustment (or null adjustment)))
1055
1056; (define-foreign layout-put () nil
1057; (layout layout)
1058; (widget widget)
1059; (x int) (y int))
1060
1061; (define-foreign layout-move () nil
1062; (layout layout)
1063; (widget widget)
1064; (x int) (y int))
1065
1066; (define-foreign %layout-set-size () nil
1067; (layout layout)
1068; (width int)
1069; (height int))
1070
1071; (defun (setf layout-size) (size layout)
1072; (%layout-set-size layout (svref size 0) (svref size 1))
1073; (values (svref size 0) (svref size 1)))
1074
f36ca6af 1075; ;; gtkglue.c
560af5c5 1076; (define-foreign layout-size () nil
1077; (layout layout)
1078; (width int :out)
1079; (height int :out))
1080
1081; (define-foreign layout-freeze () nil
1082; (layout layout))
1083
1084; (define-foreign layout-thaw () nil
1085; (layout layout))
1086
1087; (define-foreign layout-offset () nil
1088; (layout layout)
1089; (x int :out)
1090; (y int :out))
1091
1092
1093
1094;;; List
1095
1096; (define-foreign list-new () list-widget)
1097
1098; (define-foreign list-insert-items () nil
1099; (list list-widget)
1100; (items (list list-item))
1101; (position int))
1102
1103; (define-foreign list-append-items () nil
1104; (list list-widget)
1105; (items (double-list list-item)))
1106
1107; (define-foreign list-prepend-items () nil
1108; (list list-widget)
1109; (items (double-list list-item)))
1110
1111; (define-foreign %list-remove-items () nil
1112; (list list-widget)
1113; (items (double-list list-item)))
1114
1115; (define-foreign %list-remove-items-no-unref () nil
1116; (list list-widget)
1117; (items (double-list list-item)))
1118
1119; (defun list-remove-items (list items &key no-unref)
1120; (if no-unref
1121; (%list-remove-items-no-unref list items)
1122; (%list-remove-items list items)))
1123
1124; (define-foreign list-clear-items () nil
1125; (list list-widget)
1126; (start int)
1127; (end int))
1128
1129; (define-foreign list-select-item () nil
1130; (list list-widget)
1131; (item int))
1132
1133; (define-foreign list-unselect-item () nil
1134; (list list-widget)
1135; (item int))
1136
1137; (define-foreign list-select-child () nil
1138; (list list-widget)
1139; (child widget))
1140
1141; (define-foreign list-unselect-child () nil
1142; (list list-widget)
1143; (child widget))
1144
1145; (define-foreign list-child-position () int
1146; (list list-widget)
1147; (child widget))
1148
1149; (define-foreign list-extend-selection () nil
1150; (list list-widget)
1151; (scroll-type scroll-type)
1152; (position single-float)
1153; (auto-start-selection boolean))
1154
1155; (define-foreign list-start-selection () nil
1156; (list list-widget))
1157
1158; (define-foreign list-end-selection () nil
1159; (list list-widget))
1160
1161; (define-foreign list-select-all () nil
1162; (list list-widget))
1163
1164; (define-foreign list-unselect-all () nil
1165; (list list-widget))
1166
1167; (define-foreign list-scroll-horizontal () nil
1168; (list list-widget)
1169; (scroll-type scroll-type)
1170; (position single-float))
1171
1172; (define-foreign list-scroll-vertical () nil
1173; (list list-widget)
1174; (scroll-type scroll-type)
1175; (position single-float))
1176
1177; (define-foreign list-toggle-add-mode () nil
1178; (list list-widget))
1179
1180; (define-foreign list-toggle-focus-row () nil
1181; (list list-widget))
1182
1183; (define-foreign list-toggle-row () nil
1184; (list list-widget)
1185; (item list-item))
1186
1187; (define-foreign list-undo-selection () nil
1188; (list list-widget))
1189
1190; (define-foreign list-end-drag-selection () nil
1191; (list list-widget))
1192
f36ca6af 1193; ;; gtkglue.c
560af5c5 1194; (define-foreign list-selection () (double-list list-item)
1195; (list list-widget))
1196
1197
1198
1199;;; Menu shell
1200
f36ca6af 1201(define-foreign menu-shell-insert () nil
1202 (menu-shell menu-shell)
1203 (menu-item menu-item)
1204 (position int))
560af5c5 1205
f36ca6af 1206(defun menu-shell-append (menu-shell menu-item)
1207 (menu-shell-insert menu-shell menu-item -1))
560af5c5 1208
f36ca6af 1209(defun menu-shell-prepend (menu-shell menu-item)
1210 (menu-shell-insert menu-shell menu-item 0))
560af5c5 1211
f36ca6af 1212(define-foreign menu-shell-deactivate () nil
1213 (menu-shell menu-shell))
560af5c5 1214
f36ca6af 1215(define-foreign menu-shell-select-item () nil
1216 (menu-shell menu-shell)
1217 (menu-item menu-item))
560af5c5 1218
f36ca6af 1219(define-foreign menu-shell-deselect () nil
1220 (menu-shell menu-shell))
560af5c5 1221
f36ca6af 1222(define-foreign menu-shell-activate-item () nil
1223 (menu-shell menu-shell)
1224 (menu-item menu-item)
1225 (fore-deactivate boolean))
560af5c5 1226
1227
1228
1229; ;;; Menu bar
1230
f36ca6af 1231(define-foreign menu-bar-new () menu-bar)
560af5c5 1232
1233; (define-foreign menu-bar-insert () nil
1234; (menu-bar menu-bar)
1235; (menu menu)
1236; (position int))
1237
1238; (defun menu-bar-append (menu-bar menu)
1239; (menu-bar-insert menu-bar menu -1))
1240
1241; (defun menu-bar-prepend (menu-bar menu)
1242; (menu-bar-insert menu-bar menu 0))
1243
1244
1245
1246; ;;; Menu
1247
f36ca6af 1248(define-foreign menu-new () menu)
560af5c5 1249
1250; (defun menu-insert (menu menu-item position)
1251; (menu-shell-insert menu menu-item position))
1252
1253; (defun menu-append (menu menu-item)
1254; (menu-shell-append menu menu-item))
1255
1256; (defun menu-prepend (menu menu-item)
1257; (menu-shell-prepend menu menu-item))
1258
f36ca6af 1259;(defun menu-popup ...)
560af5c5 1260
f36ca6af 1261(define-foreign menu-reposition () nil
1262 (menu menu))
560af5c5 1263
f36ca6af 1264(define-foreign menu-popdown () nil
1265 (menu menu))
560af5c5 1266
f36ca6af 1267(define-foreign ("gtk_menu_get_active" menu-active) () widget
1268 (menu menu))
560af5c5 1269
f36ca6af 1270(define-foreign ("gtk_menu_set_active" (setf menu-active)) () nil
1271 (menu menu)
1272 (index unsigned-int))
560af5c5 1273
f36ca6af 1274;(defun menu-attach-to-widget ...)
560af5c5 1275
f36ca6af 1276(define-foreign menu-detach () nil
1277 (menu menu))
560af5c5 1278
f36ca6af 1279(define-foreign ("gtk_menu_get_attach_widget" menu-attach-widget) () widget
1280 (menu menu))
560af5c5 1281
f36ca6af 1282(define-foreign menu-reorder-child () nil
1283 (menu menu)
1284 (menu-item menu-item)
1285 (position int))
560af5c5 1286
1287
1288
1289;;; Packer
1290
f36ca6af 1291(define-foreign packer-new () packer)
1292
1293(define-foreign packer-add
1294 (packer child side anchor
1295 &key
1296 options
1297 (border-width (packer-default-border-width packer))
1298 (pad-x (packer-default-pad-x packer))
1299 (pad-y (packer-default-pad-y packer))
1300 (ipad-x (packer-default-ipad-x packer))
1301 (ipad-y (packer-default-ipad-y packer))) nil
1302 (packer packer)
1303 (child widget)
1304 (side side-type)
1305 (anchor anchor-type)
1306 (options packer-options)
1307 (border-width unsigned-int)
1308 (pad-x unsigned-int)
1309 (pad-y unsigned-int)
1310 (ipad-x unsigned-int)
1311 (ipad-y unsigned-int))
1312
1313(define-foreign packer-set-child-packing () nil
1314 (packer packer)
1315 (child widget)
1316 (side side-type)
1317 (anchor anchor-type)
1318 (options packer-options)
1319 (border-width unsigned-int)
1320 (pad-x unsigned-int)
1321 (pad-y unsigned-int)
1322 (ipad-x unsigned-int)
1323 (ipad-y unsigned-int))
1324
1325(define-foreign packer-reorder-child () nil
1326 (packer packer)
1327 (child widget)
1328 (position int))
560af5c5 1329
1330
1331
f36ca6af 1332;;; Table
560af5c5 1333
f36ca6af 1334(define-foreign table-new () table
1335 (rows unsigned-int)
1336 (columns unsigned-int)
1337 (homogeneous boolean))
560af5c5 1338
f36ca6af 1339(define-foreign table-resize () nil
1340 (table table)
1341 (rows unsigned-int)
1342 (columns unsigned-int))
560af5c5 1343
f36ca6af 1344(define-foreign table-attach (table child left right top bottom
1345 &key (x-options '(:expand :fill))
1346 (y-options '(:expand :fill))
1347 (x-padding 0) (y-padding 0)) nil
1348 (table table)
1349 (child widget)
1350 (left unsigned-int)
1351 (right unsigned-int)
1352 (top unsigned-int)
1353 (bottom unsigned-int)
1354 (x-options attach-options)
1355 (y-options attach-options)
1356 (x-padding unsigned-int)
1357 (y-padding unsigned-int))
1358
1359(define-foreign %table-set-row-spacing () nil
1360 (table table)
1361 (row unsigned-int)
1362 (spacing unsigned-int))
1363
1364(defun (setf table-row-spacing) (spacing table row)
1365 (%table-set-row-spacing table row spacing)
1366 spacing)
1367
1368;; gtkglue.c
1369(define-foreign table-row-spacing (table row) unsigned-int
1370 (table table)
1371 ((progn
1372 (assert (and (>= row 0) (< row (table-rows table))))
1373 row) unsigned-int))
1374
1375(define-foreign %table-set-col-spacing () nil
1376 (table table)
1377 (col unsigned-int)
1378 (spacing unsigned-int))
1379
1380(defun (setf table-column-spacing) (spacing table column)
1381 (%table-set-column-spacing table column spacing)
1382 spacing)
1383
1384;; gtkglue.c
1385(define-foreign table-column-spacing (table col) unsigned-int
1386 (table table)
1387 ((progn
1388 (assert (and (>= col 0) (< col (table-columns table))))
1389 col) unsigned-int))
1390
1391
1392(defun %set-table-child-option (object slot flag value)
1393 (let ((options (container-child-slot-value object slot)))
1394 (cond
1395 ((and value (not (member flag options)))
1396 (setf (container-child-slot-value object slot) (cons flag options)))
1397 ((and (not value) (member flag options))
1398 (setf
1399 (container-child-slot-value object slot) (delete flag options))))))
1400
1401(macrolet ((define-option-accessor (name slot flag)
1402 `(progn
1403 (defun ,name (object)
1404 (member ,flag (container-child-slot-value object ,slot)))
1405 (defun (setf ,name) (value object)
1406 (%set-table-child-option object ,slot ,flag value)))))
1407 (define-option-accessor table-child-x-expand-p :x-options :expand)
1408 (define-option-accessor table-child-y-expand-p :y-options :expand)
1409 (define-option-accessor table-child-x-shrink-p :x-options :shrink)
1410 (define-option-accessor table-child-y-shrink-p :y-options :shrink)
1411 (define-option-accessor table-child-x-fill-p :x-options :fill)
1412 (define-option-accessor table-child-y-fill-p :y-options :fill))
1413
1414
1415
1416;;; Toolbar
1417
1418(define-foreign toolbar-new () toolbar
1419 (orientation orientation)
1420 (style toolbar-style))
1421
1422;; gtkglue.c
1423(define-foreign toolbar-num-children () int
1424 (toolbar toolbar))
1425
1426(defun %toolbar-position-num (toolbar position)
1427 (case position
1428 (:prepend 0)
1429 (:append (toolbar-num-children toolbar))
1430 (t
1431 (assert (and (>= position 0) (< position (toolbar-num-children toolbar))))
1432 position)))
1433
1434(define-foreign %toolbar-insert-element () widget
1435 (toolbar toolbar)
1436 (type toolbar-child-type)
1437 (widget (or null widget))
1438 (text string)
1439 (tooltip-text string)
1440 (tooltip-private-text string)
1441 (icon (or null widget))
1442 (nil null)
1443 (nil null)
1444 (position int))
560af5c5 1445
f36ca6af 1446(defun toolbar-insert-element (toolbar position
1447 &key tooltip-text tooltip-private-text
1448 type widget icon text callback)
1449 (let* ((icon-widget (typecase icon
1450 ((or null widget) icon)
1451 (t (pixmap-new icon))))
1452 (toolbar-child
1453 (%toolbar-insert-element
1454 toolbar (or type (and widget :widget) :button)
1455 widget text tooltip-text tooltip-private-text icon-widget
1456 (%toolbar-position-num toolbar position))))
1457 (when callback
1458 (signal-connect toolbar-child 'clicked callback))
1459 toolbar-child))
1460
1461(defun toolbar-append-element (toolbar &key tooltip-text tooltip-private-text
1462 type widget icon text callback)
1463 (toolbar-insert-element
1464 toolbar :append :type type :widget widget :icon icon :text text
1465 :tooltip-text tooltip-text :tooltip-private-text tooltip-private-text
1466 :callback callback))
1467
1468(defun toolbar-prepend-element (toolbar &key tooltip-text tooltip-private-text
1469 type widget icon text callback)
1470 (toolbar-insert-element
1471 toolbar :prepend :type type :widget widget :icon icon :text text
1472 :tooltip-text tooltip-text :tooltip-private-text tooltip-private-text
1473 :callback callback))
1474
1475(defun toolbar-insert-space (toolbar position)
1476 (toolbar-insert-element toolbar position :type :space))
1477
1478(defun toolbar-append-space (toolbar)
1479 (toolbar-insert-space toolbar :append))
1480
1481(defun toolbar-prepend-space (toolbar)
1482 (toolbar-insert-space toolbar :prepend))
1483
1484(defun toolbar-insert-widget (toolbar widget position &key tooltip-text
1485 tooltip-private-text callback)
1486 (toolbar-insert-element
1487 toolbar position :widget widget :tooltip-text tooltip-text
1488 :tooltip-private-text tooltip-private-text :callback callback))
560af5c5 1489
f36ca6af 1490(defun toolbar-append-widget (toolbar widget &key tooltip-text
1491 tooltip-private-text callback)
1492 (toolbar-insert-widget
1493 toolbar widget :append :tooltip-text tooltip-text
1494 :tooltip-private-text tooltip-private-text :callback callback))
1495
1496(defun toolbar-prepend-widget (toolbar widget &key tooltip-text
1497 tooltip-private-text callback)
1498 (toolbar-insert-widget
1499 toolbar widget :prepend :tooltip-text tooltip-text
1500 :tooltip-private-text tooltip-private-text :callback callback))
1501
1502(defun toolbar-insert-item (toolbar text icon position &key tooltip-text
1503 tooltip-private-text callback)
1504 (toolbar-insert-element
1505 toolbar position :text text :icon icon :callback callback
1506 :tooltip-text tooltip-text :tooltip-private-text tooltip-private-text))
1507
1508(defun toolbar-append-item (toolbar text icon &key tooltip-text
1509 tooltip-private-text callback)
1510 (toolbar-insert-item
1511 toolbar text icon :append :callback callback
1512 :tooltip-text tooltip-text :tooltip-private-text tooltip-private-text))
560af5c5 1513
1514
f36ca6af 1515(defun toolbar-prepend-item (toolbar text icon &key tooltip-text
1516 tooltip-private-text callback)
1517 (toolbar-insert-item
1518 toolbar text icon :prepend :callback callback
1519 :tooltip-text tooltip-text :tooltip-private-text tooltip-private-text))
560af5c5 1520
f36ca6af 1521(defun toolbar-enable-tooltips (toolbar)
1522 (setf (toolbar-tooltips-p toolbar) t))
560af5c5 1523
f36ca6af 1524(defun toolbar-disable-tooltips (toolbar)
1525 (setf (toolbar-tooltips-p toolbar) nil))
560af5c5 1526
1527
1528
1529;;; Tree
1530
1531(define-foreign tree-new () tree)
1532
1533(define-foreign tree-append () nil
1534 (tree tree)
1535 (tree-item tree-item))
1536
1537(define-foreign tree-prepend () nil
1538 (tree tree)
1539 (tree-item tree-item))
1540
1541(define-foreign tree-insert () nil
1542 (tree tree)
1543 (tree-item tree-item)
1544 (position int))
1545
f36ca6af 1546(define-foreign tree-remove-items () nil
1547 (tree tree)
1548 (items (double-list tree-item)))
560af5c5 1549
1550(define-foreign tree-clear-items () nil
1551 (tree tree)
1552 (start int)
1553 (end int))
1554
1555(define-foreign tree-select-item () nil
1556 (tree tree)
1557 (item int))
1558
1559(define-foreign tree-unselect-item () nil
1560 (tree tree)
1561 (item int))
1562
1563(define-foreign tree-select-child () nil
1564 (tree tree)
1565 (tree-item tree-item))
1566
1567(define-foreign tree-unselect-child () nil
1568 (tree tree)
1569 (tree-item tree-item))
1570
1571(define-foreign tree-child-position () int
1572 (tree tree)
1573 (tree-item tree-item))
1574
1575(defun root-tree-p (tree)
1576 (eq (tree-root-tree tree) tree))
1577
f36ca6af 1578;; gtkglue.c
560af5c5 1579(define-foreign tree-selection () (double-list tree-item)
1580 (tree tree))
1581
1582
1583
1584;;; Calendar
1585
1586(define-foreign calendar-new () calendar)
1587
1588(define-foreign calendar-select-month () int
1589 (calendar calendar)
1590 (month unsigned-int)
1591 (year unsigned-int))
1592
1593(define-foreign calendar-select-day () nil
1594 (calendar calendar)
1595 (day unsigned-int))
1596
1597(define-foreign calendar-mark-day () int
1598 (calendar calendar)
1599 (day unsigned-int))
1600
1601(define-foreign calendar-unmark-day () int
1602 (calendar calendar)
1603 (day unsigned-int))
1604
1605(define-foreign calendar-clear-marks () nil
1606 (calendar calendar))
1607
1608(define-foreign calendar-display-options () nil
1609 (calendar calendar)
1610 (options calendar-display-options))
1611
1612(define-foreign ("gtk_calendar_get_date" calendar-date) () nil
1613 (calendar calendar)
1614 (year unsigned-int :out)
1615 (month unsigned-int :out)
1616 (day unsigned-int :out))
1617
1618(define-foreign calendar-freeze () nil
1619 (calendar calendar))
1620
1621(define-foreign calendar-thaw () nil
1622 (calendar calendar))
1623
1624
1625
1626;;; Drawing area
1627
1628; (define-foreign drawing-area-new () drawing-area)
1629
1630; (define-foreign ("gtk_drawing_area_size" %drawing-area-set-size) () nil
1631; (drawing-area drawing-area)
1632; (width int)
1633; (height int))
1634
1635; (defun (setf drawing-area-size) (size drawing-area)
1636; (%drawing-area-set-size drawing-area (svref size 0) (svref size 1))
1637; (values (svref size 0) (svref size 1)))
1638
f36ca6af 1639; ;; gtkglue.c
560af5c5 1640; (define-foreign ("gtk_drawing_area_get_size" drawing-area-size) () nil
1641; (drawing-area drawing-area)
1642; (width int :out)
1643; (height int :out))
1644
1645
1646
1647; ;;; Curve
1648
1649
1650
1651; ;;; Editable
1652
f36ca6af 1653(define-foreign editable-select-region (editable &optional (start 0) end) nil
1654 (editable editable)
1655 (start int)
1656 ((or end -1) int))
560af5c5 1657
f36ca6af 1658(define-foreign editable-insert-text
1659 (editable text &optional (position 0)) nil
1660 (editable editable)
1661 (text string)
1662 ((length text) int)
1663 ((or position -1) int :in-out))
560af5c5 1664
f36ca6af 1665(defun editable-append-text (editable text)
1666 (editable-insert-text editable text nil))
560af5c5 1667
f36ca6af 1668(defun editable-prepend-text (editable text)
1669 (editable-insert-text editable text 0))
560af5c5 1670
f36ca6af 1671(define-foreign editable-delete-text (editable &optional (start 0) end) nil
1672 (editable editable)
1673 (start int)
1674 ((or end -1) int))
560af5c5 1675
f36ca6af 1676(define-foreign ("gtk_editable_get_chars" editable-text)
1677 (editable &optional (start 0) end) string
1678 (editable editable)
1679 (start int)
1680 ((or end -1) int))
560af5c5 1681
f36ca6af 1682(defun (setf editable-text) (text editable)
1683 (if text
1684 (editable-delete-text
1685 editable
1686 (editable-insert-text editable text))
1687 (editable-delete-text editable))
1688 text)
560af5c5 1689
f36ca6af 1690(define-foreign editable-cut-clipboard () nil
1691 (editable editable))
560af5c5 1692
f36ca6af 1693(define-foreign editable-copy-clipboard () nil
1694 (editable editable))
560af5c5 1695
f36ca6af 1696(define-foreign editable-paste-clipboard () nil
1697 (editable editable))
560af5c5 1698
f36ca6af 1699(define-foreign editable-claim-selection () nil
1700 (editable editable)
1701 (claim boolean)
1702 (time unsigned-int))
560af5c5 1703
f36ca6af 1704(define-foreign editable-delete-selection () nil
1705 (editable editable))
560af5c5 1706
f36ca6af 1707(define-foreign editable-changed () nil
1708 (editable editable))
560af5c5 1709
560af5c5 1710
560af5c5 1711
f36ca6af 1712;;; Entry
560af5c5 1713
f36ca6af 1714(define-foreign %entry-new() entry)
560af5c5 1715
f36ca6af 1716(define-foreign %entry-new-with-max-length () entry
1717 (max (unsigned 16)))
560af5c5 1718
f36ca6af 1719(defun entry-new (&optional max)
1720 (if max
1721 (%entry-new-with-max-length max)
1722 (%entry-new)))
560af5c5 1723
560af5c5 1724
f36ca6af 1725;;; Spin button
560af5c5 1726
f36ca6af 1727(define-foreign spin-button-new () spin-button
1728 (adjustment adjustment)
1729 (climb-rate single-float)
1730 (digits unsigned-int))
560af5c5 1731
f36ca6af 1732(defun spin-button-value-as-int (spin-button)
1733 (round (spin-button-value spin-button)))
560af5c5 1734
f36ca6af 1735(define-foreign spin-button-spin () nil
1736 (spin-button spin-button)
1737 (direction spin-type)
1738 (increment single-float))
560af5c5 1739
f36ca6af 1740(define-foreign spin-button-update () nil
1741 (spin-button spin-button))
560af5c5 1742
1743
1744
1745; ;;; Ruler
1746
f36ca6af 1747(define-foreign ruler-set-range () nil
1748 (ruler ruler)
1749 (lower single-float)
1750 (upper single-float)
1751 (position single-float)
1752 (max-size single-float))
560af5c5 1753
f36ca6af 1754(define-foreign ruler-draw-ticks () nil
1755 (ruler ruler))
560af5c5 1756
f36ca6af 1757(define-foreign ruler-draw-pos () nil
1758 (ruler ruler))
560af5c5 1759
1760
1761
1762; ;;; Range
1763
1764; (define-foreign range-draw-background () nil
1765; (range range))
1766
1767; (define-foreign range-clear-background () nil
1768; (range range))
1769
1770; (define-foreign range-draw-trough () nil
1771; (range range))
1772
1773; (define-foreign range-draw-slider () nil
1774; (range range))
1775
1776; (define-foreign range-draw-step-forw () nil
1777; (range range))
1778
1779; (define-foreign range-slider-update () nil
1780; (range range))
1781
1782; (define-foreign range-trough-click () int
1783; (range range)
1784; (x int)
1785; (y int)
1786; (jump-perc single-float :out))
1787
1788; (define-foreign range-default-hslider-update () nil
1789; (range range))
1790
1791; (define-foreign range-default-vslider-update () nil
1792; (range range))
1793
1794; (define-foreign range-default-htrough-click () int
1795; (range range)
1796; (x int)
1797; (y int)
1798; (jump-perc single-float :out))
1799
1800; (define-foreign range-default-vtrough-click () int
1801; (range range)
1802; (x int)
1803; (y int)
1804; (jump-perc single-float :out))
1805
1806; (define-foreign range-default-hmotion () int
1807; (range range)
1808; (x-delta int)
1809; (y-delta int))
1810
1811; (define-foreign range-default-vmotion () int
1812; (range range)
1813; (x-delta int)
1814; (y-delta int))
1815
1816
1817
1818; ;;; Scale
1819
1820; (define-foreign scale-draw-value () nil
1821; (scale scale))
1822
1823; (define-foreign hscale-new () hscale
1824; (adjustment adjustment))
1825
1826; (define-foreign vscale-new () hscale
1827; (adjustment adjustment))
1828
1829
1830
1831; ;;; Scrollbar
1832
1833; (define-foreign hscrollbar-new () hscrollbar
1834; (adjustment adjustment))
1835
1836; (define-foreign vscrollbar-new () vscrollbar
1837; (adjustment adjustment))
1838
1839
1840
1841; ;;; Separator
1842
f36ca6af 1843(define-foreign vseparator-new () vseparator)
560af5c5 1844
f36ca6af 1845(define-foreign hseparator-new () hseparator)
560af5c5 1846
1847
1848
1849; ;;; Preview
1850
1851
1852
1853; ;;; Progress
1854
1855; (define-foreign progress-configure () adjustment
1856; (progress progress)
1857; (value single-float)
1858; (min single-float)
1859; (max single-float))
1860
1861; (define-foreign ("gtk_progress_get_text_from_value"
1862; progress-text-from-value) () string
1863; (progress progress))
1864
1865; (define-foreign ("gtk_progress_get_percentage_from_value"
1866; progress-percentage-from-value) () single-float
1867; (progress progress))
1868
1869
1870
1871; ;;; Progress bar
1872
1873; (define-foreign %progress-bar-new () progress-bar)
1874
1875; (define-foreign %progress-bar-new-with-adjustment () progress-bar
1876; (adjustment adjustment))
1877
1878; (defun progress-bar-new (&optional adjustment)
1879; (if adjustment
1880; (%progress-bar-new-with-adjustment adjustment)
1881; (%progress-bar-new)))
1882
1883; (define-foreign progress-bar-update () nil
1884; (progress-bar progress-bar)
1885; (percentage single-float))
1886
1887
1888
1889;;; Adjustment
1890
1891(define-foreign adjustment-new () adjustment
1892 (value single-float)
1893 (lower single-float)
1894 (upper single-float)
1895 (step-increment single-float)
1896 (page-increment single-float)
1897 (page-size single-float))
1898
1899(define-foreign adjustment-changed () nil
1900 (adjustment adjustment))
1901
1902(define-foreign adjustment-value-changed () nil
1903 (adjustment adjustment))
1904
1905(define-foreign adjustment-clamp-page () nil
1906 (adjustment adjustment)
1907 (lower single-float)
1908 (upper single-float))
1909
1910
1911
1912;;; Tooltips
1913
1914; (define-foreign tooltips-new () tooltips)
1915
1916; (define-foreign tooltips-enable () nil
1917; (tooltips tooltips))
1918
1919; (define-foreign tooltips-disable () nil
1920; (tooltips tooltips))
1921
1922; (define-foreign tooltips-set-tip () nil
1923; (tooltips tooltips)
1924; (widget widget)
1925; (tip-text string)
1926; (tip-private string))
1927
1928; (declaim (inline tooltips-set-colors-real))
1929; (define-foreign ("gtk_tooltips_set_colors" tooltips-set-colors-real) () nil
1930; (tooltips tooltips)
1931; (background gdk:color)
1932; (foreground gdk:color))
1933
1934; (defun tooltips-set-colors (tooltips background foreground)
1935; (gdk:with-colors ((background background)
1936; (foreground foreground))
1937; (tooltips-set-colors-real tooltips background foreground)))
1938
1939; (define-foreign tooltips-force-window () nil
1940; (tooltips tooltips))
1941
1942
1943
1944
1945; ;;; Rc
1946
1947; (define-foreign rc-add-default-file (filename) nil
1948; ((namestring (truename filename)) string))
1949
1950; (define-foreign rc-parse (filename) nil
1951; ((namestring (truename filename)) string))
1952
1953; (define-foreign rc-parse-string () nil
1954; (rc-string string))
1955
1956; (define-foreign rc-reparse-all () nil)
1957
1958; ;(define-foreign rc-get-style () style
1959; ; (widget widget))
1960
1961
1962
1963;;; Accelerator Groups
1964
1965(define-foreign accel-group-new () accel-group)
1966
1967(define-foreign accel-group-get-default () accel-group)
1968
f36ca6af 1969(deftype-method alien-ref accel-group (type-spec)
1970 (declare (ignore type-spec))
1971 '%accel-group-ref)
560af5c5 1972
f36ca6af 1973(deftype-method alien-unref accel-group (type-spec)
1974 (declare (ignore type-spec))
1975 '%accel-group-unref)
1976
1977(define-foreign %accel-group-ref () accel-group
1978 (accel-group (or accel-group pointer)))
1979
1980(define-foreign %accel-group-unref () nil
1981 (accel-group (or accel-group pointer)))
560af5c5 1982
1983(define-foreign accel-group-activate (accel-group key modifiers) boolean
1984 (accel-group accel-group)
1985 ((gdk:keyval-from-name key) unsigned-int)
1986 (modifiers gdk:modifier-type))
1987
1988(define-foreign accel-groups-activate (object key modifiers) boolean
1989 (object object)
1990 ((gdk:keyval-from-name key) unsigned-int)
1991 (modifiers gdk:modifier-type))
1992
1993(define-foreign accel-group-attach () nil
1994 (accel-group accel-group)
1995 (object object))
1996
1997(define-foreign accel-group-detach () nil
1998 (accel-group accel-group)
1999 (object object))
2000
2001(define-foreign accel-group-lock () nil
2002 (accel-group accel-group))
2003
2004(define-foreign accel-group-unlock () nil
2005 (accel-group accel-group))
2006
2007
2008;;; Accelerator Groups Entries
2009
2010(define-foreign accel-group-get-entry (accel-group key modifiers) accel-entry
2011 (accel-group accel-group)
2012 ((gdk:keyval-from-name key) unsigned-int)
2013 (modifiers gdk:modifier-type))
2014
2015(define-foreign accel-group-lock-entry (accel-group key modifiers) nil
2016 (accel-group accel-group)
2017 ((gdk:keyval-from-name key) unsigned-int)
2018 (modifiers gdk:modifier-type))
2019
2020(define-foreign accel-group-unlock-entry (accel-group key modifiers) nil
2021 (accel-group accel-group)
2022 ((gdk:keyval-from-name key) unsigned-int)
2023 (modifiers gdk:modifier-type))
2024
2025(define-foreign accel-group-add
2026 (accel-group key modifiers flags object signal) nil
2027 (accel-group accel-group)
2028 ((gdk:keyval-from-name key) unsigned-int)
2029 (modifiers gdk:modifier-type)
2030 (flags accel-flags)
2031 (object object)
2032 ((name-to-string signal) string))
2033
2034(define-foreign accel-group-add (accel-group key modifiers object) nil
2035 (accel-group accel-group)
2036 ((gdk:keyval-from-name key) unsigned-int)
2037 (modifiers gdk:modifier-type)
2038 (object object))
2039
2040
2041;;; Accelerator Signals
2042
2043(define-foreign accel-group-handle-add
2044 (object signal-id accel-group key modifiers flags) nil
2045 (object object)
2046 (signal-id unsigned-int)
2047 (accel-group accel-group)
2048 ((gdk:keyval-from-name key) unsigned-int)
2049 (modifiers gdk:modifier-type)
2050 (flags accel-flags))
2051
2052(define-foreign accel-group-handle-remove
2053 (object accel-group key modifiers) nil
2054 (object object)
2055 (accel-group accel-group)
2056 ((gdk:keyval-from-name key) unsigned-int)
2057 (modifiers gdk:modifier-type))
2058
2059
2060
2061;;; Style
2062
2063; (define-foreign style-new () style)
2064
2065; (define-foreign style-copy () style
2066; (style style))
2067
2068; (define-foreign style-ref () style
2069; (style style))
2070
2071; (define-foreign style-unref () nil
2072; (style style))
2073
2074; (define-foreign style-get-color () gdk:color
2075; (style style)
2076; (color-type color-type)
2077; (state-type state-type))
2078
2079; (define-foreign
2080; ("gtk_style_set_color" style-set-color-from-color) () gdk:color
2081; (style style)
2082; (color-type color-type)
2083; (state-type state-type)
2084; (color gdk:color))
2085
2086; (defun style-set-color (style color-type state-type color)
2087; (gdk:with-colors ((color color))
2088; (style-set-color-from-color style color-type state-type color)))
2089
2090; (define-foreign ("gtk_style_get_font" style-font) () gdk:font
2091; (style style))
2092
2093; (define-foreign style-set-font () gdk:font
2094; (style style)
2095; (font gdk:font))
2096
2097; (defun (setf style-font) (font style)
2098; (let ((font (gdk:ensure-font font)))
2099; (gdk:font-unref (style-font style))
2100; (style-set-font style font)))
2101
2102; (defun style-fg (style state)
2103; (style-get-color style :foreground state))
2104
2105; (defun (setf style-fg) (color style state)
2106; (style-set-color style :foreground state color))
2107
2108; (defun style-bg (style state)
2109; (style-get-color style :background state))
2110
2111; (defun (setf style-bg) (color style state)
2112; (style-set-color style :background state color))
2113
2114; (defun style-text (style state)
2115; (style-get-color style :text state))
2116
2117; (defun (setf style-text) (color style state)
2118; (style-set-color style :text state color))
2119
2120; (defun style-base (style state)
2121; (style-get-color style :base state))
2122
2123; (defun (setf style-base) (color style state)
2124; (style-set-color style :base state color))
2125
2126; (defun style-white (style)
2127; (style-get-color style :white :normal))
2128
2129; (defun (setf style-white) (color style)
2130; (style-set-color style :white :normal color))
2131
2132; (defun style-black (style)
2133; (style-get-color style :black :normal))
2134
2135; (defun (setf style-black) (color style)
2136; (style-set-color style :black :normal color))
2137
2138; (define-foreign style-get-gc
2139; (style color-type &optional (state-type :normal)) gdk:gc
2140; (style style)
2141; (color-type color-type)
2142; (state-type state-type))
2143
2144
2145
2146
2147
2148
2149
2150