chiark / gitweb /
Initial revision
[clg] / gtk / gtk.lisp
... / ...
CommitLineData
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
18;; $Id: gtk.lisp,v 1.1 2000-08-14 16:44:51 espen Exp $
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
42(export '*clg-version*)
43
44
45
46;;; InitializationInitialization, exit, mainloop and miscellaneous routines
47
48
49(define-foreign grab-add () nil
50 (widget widget))
51
52(define-foreign grab-get-current () widget)
53
54(define-foreign grab-remove () nil
55 (widget widget))
56
57(define-foreign ("gtk_timeout_add_full" timeout-add)
58 (interval function) unsigned-int
59 (interval (unsigned 32))
60 (0 unsigned-long)
61 (*callback-marshal* pointer)
62 ((register-callback-function function) unsigned-long)
63 (*destroy-marshal* pointer))
64
65(define-foreign timeout-remove () nil
66 (timeout-handler-id unsigned-int))
67
68(define-foreign ("gtk_idle_add_full" idle-add)
69 (function &optional (priority 200)) unsigned-int
70 (priority int)
71 (0 unsigned-long)
72 (*callback-marshal* pointer)
73 ((register-callback-function function) unsigned-long)
74 (*destroy-marshal* pointer))
75
76(define-foreign idle-remove () nil
77 (idle-handler-id unsigned-int))
78
79(define-foreign get-current-event () gdk:event)
80
81(define-foreign get-event-widget () widget
82 (event gdk:event))
83
84
85;;; should be moved to gobject
86
87; (define-foreign ("gtk_object_set_data_full" object-set-data)
88; (object key data &optional destroy-function) nil
89; (object object)
90; ((string key) string)
91; ((register-user-data data destroy-function) unsigned-long)
92; (*destroy-marshal* pointer))
93
94; (defun (setf object-data) (data object key)
95; (object-set-data object key data)
96; data)
97
98; (define-foreign %object-get-data (object key) unsigned-long
99; (object object)
100; ((string key) string))
101
102; (defun object-data (object key)
103; (find-user-data (%object-get-data object key)))
104
105; (define-foreign object-remove-data (object key) nil
106; (object object)
107; ((string key) string))
108
109; (defun object-user-data (object)
110; (object-data object :user-data))
111
112; (defun (setf object-user-data) (data object)
113; (setf (object-data object :user-data) data))
114
115
116;;; Label
117
118(define-foreign label-new () label
119 (text string))
120
121(define-foreign label-parse-uline () unsigned-int
122 (label label)
123 (string string))
124
125
126
127;;; Acccel label
128
129(define-foreign accel-label-new () accel-label
130 (text string))
131
132(define-foreign accel-label-refetch () boolean
133 (accel-label accel-label))
134
135
136
137;;; Tips query
138
139(define-foreign tips-query-new () tips-query)
140
141(define-foreign tips-query-start-query () nil
142 (tips-query tips-query))
143
144(define-foreign tips-query-stop-query () nil
145 (tips-query tips-query))
146
147
148
149;;; Arrow
150
151(define-foreign arrow-new () arrow
152 (arrow-type arrow-type)
153 (shadow-type shadow-type))
154
155
156
157;;; Pixmap
158
159; (defun %pixmap-create (source)
160; (cond
161; ((not source) nil)
162; ((typep source gdk:pixmap) source)
163; ((and (consp source) (typep (first source) gdk:pixmap)) (values-list source))
164; (t (gdk:pixmap-create source))))
165
166(define-foreign %pixmap-new () pixmap
167 (pixmap gdk:pixmap)
168 (mask (or null gdk:bitmap)))
169
170(defun pixmap-new (source)
171 (multiple-value-bind (pixmap mask)
172 (%pixmap-create source)
173 (%pixmap-new pixmap mask)))
174
175(define-foreign %pixmap-set () nil
176 (pixmap pixmap)
177 (gdk:pixmap gdk:pixmap)
178 (mask (or null gdk:bitmap)))
179
180(defun (setf pixmap-pixmap) (source pixmap)
181 (multiple-value-bind (gdk:pixmap mask)
182 (%pixmap-create source)
183 (%pixmap-set pixmap gdk:pixmap mask)
184 (values gdk:pixmap mask)))
185
186(define-foreign ("gtk_pixmap_get" pixmap-pixmap) () nil
187 (pixmap pixmap)
188 (val gdk:pixmap :out)
189 (mask gdk:bitmap :out))
190
191
192
193;;; Bin
194
195(defun bin-child (bin)
196 (first (container-children bin)))
197
198(defun (setf bin-child) (child bin)
199 (let ((old-child (bin-child bin)))
200 (when old-child
201 (container-remove bin old-child)))
202 (container-add bin child)
203 child)
204
205
206;;; Alignment
207
208(define-foreign alignment-new () alignment
209 (xalign single-float)
210 (ylign single-float)
211 (xscale single-float)
212 (yscale single-float))
213
214
215
216;;; Frame
217
218(define-foreign frame-new (&optional label) frame
219 (label string))
220
221
222
223;;; Aspect frame
224
225(define-foreign aspect-frame-new () alignment
226 (xalign single-float)
227 (ylign single-float)
228 (ratio single-float)
229 (obey-child boolean))
230
231
232
233;;; Button
234
235(define-foreign %button-new () button)
236
237(define-foreign %button-new-with-label () button
238 (label string))
239
240(defun button-new (&optional label)
241 (if label
242 (%button-new-with-label label)
243 (%button-new)))
244
245(define-foreign button-pressed () nil
246 (button button))
247
248(define-foreign button-released () nil
249 (button button))
250
251(define-foreign button-clicked () nil
252 (button button))
253
254(define-foreign button-enter () nil
255 (button button))
256
257(define-foreign button-leave () nil
258 (button button))
259
260
261
262;;; Toggle button
263
264(define-foreign %toggle-button-new () toggle-button)
265
266(define-foreign %toggle-button-new-with-label () toggle-button
267 (label string))
268
269(defun toggle-button-new (&optional label)
270 (if label
271 (%toggle-button-new-with-label label)
272 (%toggle-button-new)))
273
274(define-foreign toggle-button-toggled () nil
275 (toggle-button toggle-button))
276
277
278
279;;; Check button
280
281(define-foreign %check-button-new () check-button)
282
283(define-foreign %check-button-new-with-label () check-button
284 (label string))
285
286(defun check-button-new (&optional label)
287 (if label
288 (%check-button-new-with-label label)
289 (%check-button-new)))
290
291
292
293;;; Radio button
294
295(define-foreign %radio-button-new () radio-button
296 (group (or null radio-button-group)))
297
298(define-foreign %radio-button-new-with-label-from-widget () radio-button
299 (widget (or null widget))
300 (label string))
301
302(define-foreign %radio-button-new-from-widget () radio-button
303 (widget (or null widget)))
304
305(define-foreign %radio-button-new-with-label () radio-button
306 (group (or null radio-button-group))
307 (label string))
308
309(defun radio-button-new (group &key label from-widget)
310 (cond
311 ((and from-widget label)
312 (%radio-button-new-with-label-from-widget group label))
313 (from-widget
314 (%radio-button-new-from-widget group))
315 (label
316 (%radio-button-new-with-label group label))
317 (t
318 (%radio-button-new group))))
319
320(define-foreign radio-button-group () radio-button-group
321 (radio-button radio-button))
322
323
324
325;;; Option menu
326
327; (define-foreign option-menu-new () option-menu)
328
329; (define-foreign %option-menu-set-menu () nil
330; (option-menu option-menu)
331; (menu widget))
332
333; (define-foreign %option-menu-remove-menu () nil
334; (option-menu option-menu))
335
336; (defun (setf option-menu-menu) (menu option-menu)
337; (if (not menu)
338; (%option-menu-remove-menu option-menu)
339; (%option-menu-set-menu option-menu menu))
340; menu)
341
342
343
344;;; Item
345
346(define-foreign item-select () nil
347 (item item))
348
349(define-foreign item-deselect () nil
350 (item item))
351
352(define-foreign item-toggle () nil
353 (item item))
354
355
356
357;;; Menu item
358
359; (define-foreign %menu-item-new () menu-item)
360
361; (define-foreign %menu-item-new-with-label () menu-item
362; (label string))
363
364; (defun menu-item-new (&optional label)
365; (if label
366; (%menu-item-new-with-label label)
367; (%menu-item-new)))
368
369; (defun (setf menu-item-label) (label menu-item)
370; (let ((accel-label (accel-label-new label)))
371; (setf (misc-xalign accel-label) 0.0)
372; (setf (misc-yalign accel-label) 0.5)
373
374; (container-add menu-item accel-label)
375; (setf (accel-label-accel-widget accel-label) menu-item)
376; (widget-show accel-label))
377; label)
378
379; (define-foreign %menu-item-set-submenu () nil
380; (menu-item menu-item)
381; (submenu menu))
382
383; (define-foreign %menu-item-remove-submenu () nil
384; (menu-item menu-item))
385
386; (defun (setf menu-item-submenu) (submenu menu-item)
387; (if (not submenu)
388; (%menu-item-remove-submenu menu-item)
389; (%menu-item-set-submenu menu-item submenu))
390; submenu)
391
392; (define-foreign %menu-item-configure () nil
393; (menu-item menu-item)
394; (show-toggle-indicator boolean)
395; (show-submenu-indicator boolean))
396
397; (defun (setf menu-item-toggle-indicator-p) (show menu-item)
398; (%menu-item-configure
399; menu-item
400; show
401; (menu-item-submenu-indicator-p menu-item))
402; show)
403
404; (defun (setf menu-item-submenu-indicator-p) (show menu-item)
405; (%menu-item-configure
406; menu-item
407; (menu-item-toggle-indicator-p menu-item)
408; show))
409
410; (define-foreign menu-item-select () nil
411; (menu-item menu-item))
412
413; (define-foreign menu-item-deselect () nil
414; (menu-item menu-item))
415
416; (define-foreign menu-item-activate () nil
417; (menu-item menu-item))
418
419; (define-foreign menu-item-right-justify () nil
420; (menu-item menu-item))
421
422
423
424; ;;; Check menu item
425
426; (define-foreign %check-menu-item-new
427; () check-menu-item)
428
429; (define-foreign %check-menu-item-new-with-label () check-menu-item
430; (label string))
431
432; (defun check-menu-item-new (&optional label)
433; (if label
434; (%check-menu-item-new-with-label label)
435; (%check-menu-item-new)))
436
437; (define-foreign check-menu-item-toggled () nil
438; (check-menu-item check-menu-item))
439
440
441
442; ;;; Radio menu item
443
444; (define-foreign %radio-menu-item-new
445; () radio-menu-item
446; (group (or null radio-menu-item-group)))
447
448; (define-foreign %radio-menu-item-new-with-label () radio-menu-item
449; (group (or null radio-menu-item-group))
450; (label string))
451
452; (defun radio-menu-item-new (group &optional label)
453; (if label
454; (%radio-menu-item-new-with-label group label)
455; (%radio-menu-item-new group)))
456
457
458
459; ;;; Tearoff menu item
460
461; (define-foreign tearoff-menu-item-new () tearoff-menu-item)
462
463
464
465;;; List item
466
467(define-foreign %list-item-new () list-item)
468
469(define-foreign %list-item-new-with-label () list-item
470 (label string))
471
472(defun list-item-new (&optional label)
473 (if label
474 (%list-item-new-with-label label)
475 (%list-item-new)))
476
477(define-foreign list-item-select () nil
478 (list-item list-item))
479
480(define-foreign list-item-deselect () nil
481 (list-item list-item))
482
483
484
485;;; Tree item
486
487(define-foreign %tree-item-new () tree-item)
488
489(define-foreign %tree-item-new-with-label () tree-item
490 (label string))
491
492(defun tree-item-new (&optional label)
493 (if label
494 (%tree-item-new-with-label label)
495 (%tree-item-new)))
496
497(define-foreign %tree-item-set-subtree () nil
498 (tree-item tree-item)
499 (subtree tree))
500
501(define-foreign %tree-item-remove-subtree () nil
502 (tree-item tree-item))
503
504(defun (setf tree-item-subtree) (subtree tree-item)
505 (if subtree
506 (%tree-item-set-subtree tree-item subtree)
507 (%tree-item-remove-subtree tree-item))
508 subtree)
509
510(define-foreign tree-item-select () nil
511 (tree-item tree-item))
512
513(define-foreign tree-item-deselect () nil
514 (tree-item tree-item))
515
516(define-foreign tree-item-expand () nil
517 (tree-item tree-item))
518
519(define-foreign tree-item-collapse () nil
520 (tree-item tree-item))
521
522
523
524;;; Window
525
526(define-foreign window-new () window
527 (type window-type))
528
529(define-foreign %window-set-wmclass () nil
530 (window window)
531 (wmclass-name string)
532 (wmclass-class string))
533
534(defun (setf window-wmclass) (wmclass window)
535 (%window-set-wmclass window (svref wmclass 0) (svref wmclass 1))
536 (values (svref wmclass 0) (svref wmclass 1)))
537
538;; cl-gtk.c
539(define-foreign window-wmclass () nil
540 (window window)
541 (wmclass-name string :out)
542 (wmclass-class string :out))
543
544(define-foreign window-add-accel-group () nil
545 (window window)
546 (accel-group accel-group))
547
548(define-foreign window-remove-accel-group () nil
549 (window window)
550 (accel-group accel-group))
551
552(define-foreign window-activate-focus () int
553 (window window))
554
555(define-foreign window-activate-default () int
556 (window window))
557
558(define-foreign window-set-transient-for () nil
559 (window window)
560 (parent window))
561
562;(define-foreign window-set-geometry-hints)
563
564
565
566;;; Color selection dialog
567
568; (define-foreign color-selection-dialog-new () color-selection-dialog
569; (title string))
570
571
572
573;;; Dialog
574
575; (define-foreign dialog-new () dialog)
576
577
578
579;;; Input dialog
580
581; (define-foreign input-dialog-new () dialog)
582
583
584
585;;; File selection
586
587; (define-foreign file-selection-new () file-selection
588; (title string))
589
590; (define-foreign file-selection-complete () nil
591; (file-selection file-selection)
592; (pattern string))
593
594; (define-foreign file-selection-show-fileop-buttons () nil
595; (file-selection file-selection))
596
597; (define-foreign file-selection-hide-fileop-buttons () nil
598; (file-selection file-selection))
599
600
601
602; ;;; Handle box
603
604; (define-foreign handle-box-new () handle-box)
605
606
607
608; ;;; Scrolled window
609
610(define-foreign scrolled-window-new
611 (&optional hadjustment vadjustment) scrolled-window
612 (hadjustment (or null adjustment))
613 (vadjustment (or null adjustment)))
614
615(defun (setf scrolled-window-scrollbar-policy) (policy window)
616 (setf (scrolled-window-hscrollbar-policy window) policy)
617 (setf (scrolled-window-vscrollbar-policy window) policy))
618
619(define-foreign scrolled-window-add-with-viewport () nil
620 (scrolled-window scrolled-window)
621 (child widget))
622
623
624
625; ;;; Viewport
626
627; (define-foreign viewport-new () viewport
628; (hadjustment adjustment)
629; (vadjustment adjustment))
630
631
632
633;;; Box
634
635(define-foreign box-pack-start () nil
636 (box box)
637 (child widget)
638 (expand boolean)
639 (fill boolean)
640 (padding unsigned-int))
641
642(define-foreign box-pack-end () nil
643 (box box)
644 (child widget)
645 (expand boolean)
646 (fill boolean)
647 (padding unsigned-int))
648
649(defun box-pack (box child &key (pack :start) (expand t) (fill t) (padding 0))
650 (if (eq pack :start)
651 (box-pack-start box child expand fill padding)
652 (box-pack-end box child expand fill padding)))
653
654(define-foreign box-reorder-child () nil
655 (box box)
656 (child widget)
657 (position int))
658
659(define-foreign box-query-child-packing () nil
660 (box box)
661 (child widget :out)
662 (expand boolean :out)
663 (fill boolean :out)
664 (padding unsigned-int :out)
665 (pack-type pack-type :out))
666
667(define-foreign box-set-child-packing () nil
668 (box box)
669 (child widget)
670 (expand boolean)
671 (fill boolean)
672 (padding unsigned-int)
673 (pack-type pack-type))
674
675
676
677;;; Button box
678
679(define-foreign ("gtk_button_box_get_child_size_default"
680 button-box-default-child-size) () nil
681 (min-width int :out)
682 (min-height int :out))
683
684(define-foreign ("gtk_button_box_get_child_ipadding_default"
685 button-box-default-child-ipadding) () nil
686 (ipad-x int :out)
687 (ipad-y int :out))
688
689(define-foreign %button-box-set-child-size-default () nil
690 (min-width int)
691 (min-height int))
692
693(defun (setf button-box-default-child-size) (size)
694 (%button-box-set-child-size-default (svref size 0) (svref size 1))
695 (values (svref size 0) (svref size 1)))
696
697(define-foreign %button-box-set-child-ipadding-default () nil
698 (ipad-x int)
699 (ipad-y int))
700
701(defun (setf button-box-default-child-ipadding) (ipad)
702 (%button-box-set-child-ipadding-default (svref ipad 0) (svref ipad 1))
703 (values (svref ipad 0) (svref ipad 1)))
704
705(define-foreign
706 ("gtk_button_box_get_child_size" button-box-child-size) () nil
707 (button-box button-box)
708 (min-width int :out)
709 (min-height int :out))
710
711(define-foreign
712 ("gtk_button_box_get_child_ipadding" button-box-child-ipadding) () nil
713 (button-box button-box)
714 (ipad-x int :out)
715 (ipad-y int :out))
716
717(define-foreign %button-box-set-child-size () nil
718 (button-box button-box)
719 (min-width int)
720 (min-height int))
721
722(defun (setf button-box-child-size) (size button-box)
723 (%button-box-set-child-size button-box (svref size 0) (svref size 1))
724 (values (svref size 0) (svref size 1)))
725
726(define-foreign %button-box-set-child-ipadding () nil
727 (button-box button-box)
728 (ipad-x int)
729 (ipad-y int))
730
731(defun (setf button-box-child-ipadding) (ipad button-box)
732 (%button-box-set-child-ipadding button-box (svref ipad 0) (svref ipad 1))
733 (values (svref ipad 0) (svref ipad 1)))
734
735
736
737;;; HButton box
738
739;(define-foreign hbutton-box-new () hbutton-box)
740
741(define-foreign ("gtk_hbutton_box_get_spacing_default"
742 hbutton-box-default-spacing) () int)
743
744(define-foreign ("gtk_hbutton_box_set_spacing_default"
745 (setf hbutton-box-default-spacing)) () nil
746 (spacing int))
747
748(define-foreign ("gtk_hbutton_box_get_layout_default"
749 hbutton-box-default-layout) () button-box-style)
750
751(define-foreign ("gtk_hbutton_box_set_layout_default"
752 (setf hbutton-box-default-layout)) () nil
753 (layout button-box-style))
754
755
756
757;;; VButton Box
758
759;(define-foreign vbutton-box-new () vbutton-box)
760
761(define-foreign ("gtk_vbutton_box_get_spacing_default"
762 vbutton-box-default-spacing) () int)
763
764(define-foreign ("gtk_vbutton_box_set_spacing_default"
765 (setf vbutton-box-default-spacing)) () nil
766 (spacing int))
767
768(define-foreign ("gtk_vbutton_box_get_layout_default"
769 vbutton-box-default-layout) () button-box-style)
770
771(define-foreign ("gtk_vbutton_box_set_layout_default"
772 (setf vbutton-box-default-layout)) () nil
773 (layout button-box-style))
774
775
776
777;;; VBox
778
779(define-foreign vbox-new () vbox
780 (homogeneous boolean)
781 (spacing int))
782
783
784
785;;; Color selection
786
787; (define-foreign color-selection-new () color-selection)
788
789; ;; cl-gtk.c
790; (define-foreign %color-selection-set-color-by-values () nil
791; (colorsel color-selection)
792; (red double-float)
793; (green double-float)
794; (blue double-float)
795; (opacity double-float))
796
797; (defun (setf color-selection-color) (color colorsel)
798; (%color-selection-set-color-by-values
799; colorsel
800; (svref color 0) (svref color 1) (svref color 2)
801; (if (> (length color) 3)
802; (svref color 3)
803; 1.0))
804; color)
805
806; ;; cl-gtk.c
807; (define-foreign %color-selection-get-color-as-values () nil
808; (colorsel color-selection)
809; (red double-float :out)
810; (green double-float :out)
811; (blue double-float :out)
812; (opacity double-float :out))
813
814; (defun color-selection-color (colorsel)
815; (multiple-value-bind (red green blue opacity)
816; (%color-selection-get-color-as-values colorsel)
817; (if (color-selection-use-opacity-p colorsel)
818; (vector red green blue opacity)
819; (vector red green blue))))
820
821
822
823
824; ;;; Gamma curve
825
826; (define-foreign gamma-curve-new () gamma-curve)
827
828
829
830;;; HBox
831
832(define-foreign hbox-new () hbox
833 (homogeneous boolean)
834 (spacing int))
835
836
837
838;;; Combo
839
840; (define-foreign combo-new () combo)
841
842; (define-foreign combo-set-value-in-list () nil
843; (combo combo)
844; (val boolean)
845; (ok-if-empty boolean))
846
847; (define-foreign ("gtk_combo_set_item_string" (setf combo-item-string)) () nil
848; (combo combo)
849; (item item)
850; (item-value string))
851
852; (define-foreign ("gtk_combo_set_popdown_strings"
853; (setf combo-popdown-strings)) () nil
854; (combo combo)
855; (strings (double-list string)))
856
857; (define-foreign combo-disable-activate () nil
858; (combo combo))
859
860
861
862; ;;; Statusbar
863
864; (define-foreign statusbar-new () statusbar)
865
866; (define-foreign
867; ("gtk_statusbar_get_context_id" statusbar-context-id) () unsigned-int
868; (statusbar statusbar)
869; (context-description string))
870
871; (define-foreign statusbar-push () unsigned-int
872; (statusbar statusbar)
873; (context-id unsigned-int)
874; (text string))
875
876; (define-foreign statusbar-pop () nil
877; (statusbar statusbar)
878; (context-id unsigned-int))
879
880; (define-foreign statusbar-remove () nil
881; (statusbar statusbar)
882; (context-id unsigned-int)
883; (message-id unsigned-int))
884
885
886
887;;; CList
888
889; (define-foreign %clist-new () clist
890; (columns int))
891
892; (define-foreign %clist-new-with-titles () clist
893; (columns int)
894; (titles pointer))
895
896; (defun clist-new (columns)
897; (if (atom columns)
898; (%clist-new columns)
899; (with-array (titles :initial-contents columns :free-contents t)
900; (%clist-new-with-titles (length columns) titles))))
901
902; (define-foreign ("gtk_clist_set_button_actions"
903; (setf clist-button-actions)) () nil
904; (clist clist)
905; (button unsigned-int)
906; (button-actions button-actions))
907
908; (define-foreign clist-freeze () nil
909; (clist clist))
910
911; (define-foreign clist-thaw () nil
912; (clist clist))
913
914; (define-foreign clist-column-titles-show () nil
915; (clist clist))
916
917; (define-foreign clist-column-titles-hide () nil
918; (clist clist))
919
920; (defun (setf clist-titles-visible-p) (visible clist)
921; (if visible
922; (clist-column-titles-hide clist)
923; (clist-column-titles-show clist)))
924
925; (define-foreign clist-column-title-active () nil
926; (clist clist)
927; (column int))
928
929; (define-foreign clist-column-title-passive () nil
930; (clist clist)
931; (column int))
932
933; (define-foreign clist-column-titles-active () nil
934; (clist clist))
935
936; (define-foreign clist-column-titles-passive () nil
937; (clist clist))
938
939; (define-foreign ("gtk_clist_set_column_title"
940; (setf clist-column-title)) () nil
941; (clist clist)
942; (column int)
943; (title string))
944
945; (define-foreign ("gtk_clist_get_column_title" clist-column-title) () string
946; (clist clist)
947; (column int))
948
949; (define-foreign ("gtk_clist_set_column_widget"
950; (setf clist-column-widget)) () nil
951; (clist clist)
952; (column int)
953; (widget widget))
954
955; (define-foreign ("gtk_clist_get_column_widget" clist-column-widget) () widget
956; (clist clist)
957; (column int))
958
959; (define-foreign ("gtk_clist_set_column_justification"
960; (setf clist-column-justification)) () nil
961; (clist clist)
962; (column int)
963; (justification justification))
964
965; (define-foreign clist-column-justification (clist column) justification
966; (clist clist)
967; ((progn
968; (assert (and (>= column 0) (< column (clist-n-columns clist))))
969; column)
970; int))
971
972; (define-foreign ("gtk_clist_set_column_visibility"
973; (setf clist-column-visible-p)) () nil
974; (clist clist)
975; (column int)
976; (visible boolean))
977
978; ;; cl-gtk.c
979; (define-foreign clist-column-visible-p (clist column) boolean
980; (clist clist)
981; ((progn
982; (assert (and (>= column 0) (< column (clist-n-columns clist))))
983; column)
984; int))
985
986; (define-foreign ("gtk_clist_set_column_resizeable"
987; (setf clist-column-resizeable-p)) () nil
988; (clist clist)
989; (column int)
990; (resizeable boolean))
991
992; ;; cl-gtk.c
993; (define-foreign clist-column-resizeable-p (clist column) boolean
994; (clist clist)
995; ((progn
996; (assert (and (>= column 0) (< column (clist-n-columns clist))))
997; column)
998; int))
999
1000; (define-foreign ("gtk_clist_set_column_auto_resize"
1001; (setf clist-column-auto-resize-p)) () nil
1002; (clist clist)
1003; (column int)
1004; (auto-resize boolean))
1005
1006; ;; cl-gtk.c
1007; (define-foreign clist-column-auto-resize-p (clist column) boolean
1008; (clist clist)
1009; ((progn
1010; (assert (and (>= column 0) (< column (clist-n-columns clist))))
1011; column)
1012; int))
1013
1014; (define-foreign clist-columns-autosize () int
1015; (clist clist))
1016
1017; (define-foreign clist-optimal-column-width () int
1018; (clist clist)
1019; (column int))
1020
1021; (define-foreign ("gtk_clist_set_column_width"
1022; (setf clist-column-width)) () nil
1023; (clist clist)
1024; (column int)
1025; (width int))
1026
1027; ;; cl-gtk.c
1028; (define-foreign clist-column-width (clist column) int
1029; (clist clist)
1030; ((progn
1031; (assert (and (>= column 0) (< column (clist-n-columns clist))))
1032; column)
1033; int))
1034
1035; (define-foreign ("gtk_clist_set_column_min_width"
1036; (setf clist-column-min-width)) (min-width clist column) nil
1037; (clist clist)
1038; (column int)
1039; ((or min-width -1) int))
1040
1041; (define-foreign ("gtk_clist_set_column_max_width"
1042; (setf clist-column-max-width)) (max-width clist column) nil
1043; (clist clist)
1044; (column int)
1045; ((or max-width -1) int))
1046
1047; (define-foreign clist-moveto () nil
1048; (clist clist)
1049; (row int)
1050; (column int)
1051; (row-align single-float)
1052; (columnt-align single-float))
1053
1054; (define-foreign
1055; ("gtk_clist_row_is_visible" clist-row-visiblie-p) () visibility
1056; (clist clist)
1057; (row int))
1058
1059; (define-foreign ("gtk_clist_get_cell_type" clist-cell-type) () cell-type
1060; (clist clist)
1061; (row int)
1062; (column int))
1063
1064; (define-foreign ("gtk_clist_set_text" (setf clist-cell-text)) () nil
1065; (clist clist)
1066; (row int)
1067; (column int)
1068; (text string))
1069
1070; (define-foreign %clist-set-pixmap () nil
1071; (clist clist)
1072; (row int)
1073; (column int)
1074; (gdk:pixmap gdk:pixmap)
1075; (mask (or null gdk:bitmap)))
1076
1077; (defun (setf clist-cell-pixmap) (pixmap clist row column)
1078; (multiple-value-bind (gdk:pixmap mask)
1079; (%pixmap-create pixmap)
1080; (%clist-set-pixmap clist row column gdk:pixmap mask)
1081; (values pixmap mask)))
1082
1083; (define-foreign %clist-set-pixtext () nil
1084; (clist clist)
1085; (row int)
1086; (column int)
1087; (text string)
1088; (spacing uint8)
1089; (pixmap gdk:pixmap)
1090; (mask (or null gdk:bitmap)))
1091
1092; (defun clist-set-cell-pixtext (clist row column text spacing pixmap)
1093; (multiple-value-bind (gdk:pixmap mask)
1094; (%pixmap-create pixmap)
1095; (%clist-set-pixtext clist row column text spacing gdk:pixmap mask)))
1096
1097; (define-foreign %clist-get-text () boolean
1098; (clist clist)
1099; (row int)
1100; (column int)
1101; (text string :out))
1102
1103; (defun clist-cell-text (clist row column)
1104; (multiple-value-bind (success text)
1105; (%clist-get-text clist row column)
1106; (unless success
1107; (error
1108; "Cell at row ~D column ~D in ~A is not of type :text"
1109; row column clist))
1110; text))
1111
1112; (define-foreign ("gtk_clist_get_pixmap" %clist-get-pixmap) () boolean
1113; (clist clist)
1114; (row int)
1115; (column int)
1116; (pixmap gdk:pixmap :out)
1117; (mask gdk:bitmap :out))
1118
1119; (defun clist-cell-pixmap (clist row column)
1120; (multiple-value-bind (success pixmap mask)
1121; (%clist-get-pixmap clist row column)
1122; (unless success
1123; (error
1124; "Cell at row ~D column ~D in ~A is not of type :pixmap"
1125; row column clist))
1126; (values pixmap mask)))
1127
1128; (define-foreign %clist-get-pixtext () boolean
1129; (clist clist)
1130; (row int)
1131; (column int)
1132; (text string :out)
1133; (spacing unsigned-int :out)
1134; (pixmap gdk:pixmap :out)
1135; (mask gdk:bitmap :out))
1136
1137; (defun clist-cell-pixtext (clist row column)
1138; (multiple-value-bind (success text spacing pixmap mask)
1139; (%clist-get-pixtext clist row column)
1140; (unless success
1141; (error
1142; "Cell at row ~D column ~D in ~A is not of type :pixtext"
1143; row column clist))
1144; (values text spacing pixmap mask)))
1145
1146; (define-foreign %clist-set-foreground () nil
1147; (clist clist)
1148; (row int)
1149; (color gdk:color))
1150
1151; (defun (setf clist-foreground) (color clist row)
1152; (gdk:with-colors ((color color))
1153; (%clist-set-foreground clist row color))
1154; color)
1155
1156; (define-foreign %clist-set-background () nil
1157; (clist clist)
1158; (row int)
1159; (color gdk:color))
1160
1161; (defun (setf clist-background) (color clist row)
1162; (gdk:with-colors ((color color))
1163; (%clist-set-background clist row color))
1164; color)
1165
1166; (define-foreign ("gtk_clist_set_cell_style"
1167; (setf clist-cell-style)) () nil
1168; (clist clist)
1169; (row int)
1170; (column int)
1171; (style style))
1172
1173; (define-foreign ("gtk_clist_get_cell_style" clist-cell-style) () style
1174; (clist clist)
1175; (row int)
1176; (column int))
1177
1178; (define-foreign ("gtk_clist_set_row_style"
1179; (setf clist-row-style)) () nil
1180; (clist clist)
1181; (row int)
1182; (style style))
1183
1184; (define-foreign ("gtk_clist_get_row_style" clist-row-style) () style
1185; (clist clist)
1186; (row int))
1187
1188; (define-foreign clist-set-shift () nil
1189; (clist clist)
1190; (row int)
1191; (column int)
1192; (vertical int)
1193; (horizontal int))
1194
1195; (define-foreign ("gtk_clist_set_selectable"
1196; (setf clist-selectable-p)) () nil
1197; (clist clist)
1198; (row int)
1199; (selectable boolean))
1200
1201; (define-foreign ("gtk_clist_get_selectable" clist-selectable-p) () boolean
1202; (clist clist)
1203; (row int))
1204
1205; (define-foreign ("gtk_clist_insert" %clist-insert) () int
1206; (clist clist)
1207; (row int)
1208; (text pointer))
1209
1210; (defun clist-insert (clist row text)
1211; (unless (= (length text) (clist-n-columns clist))
1212; (error "Wrong number of elements in ~A" text))
1213; (with-array (data :initial-contents text :free-contents t)
1214; (%clist-insert clist row data)))
1215
1216; (defun clist-prepend (clist text)
1217; (clist-insert clist 0 text))
1218
1219; (defun clist-append (clist text)
1220; (clist-insert clist -1 text))
1221
1222; (define-foreign clist-remove () nil
1223; (clist clist)
1224; (row int))
1225
1226; (define-foreign ("gtk_clist_set_row_data_full" clist-set-row-data)
1227; (clist row data &optional destroy-function) nil
1228; (clist clist)
1229; (row int)
1230; ((register-user-data data destroy-function) unsigned-long)
1231; (*destroy-marshal* pointer))
1232
1233; (defun (setf clist-row-data) (data clist row)
1234; (clist-set-row-data clist row data)
1235; data)
1236
1237; (define-foreign %clist-get-row-data () unsigned-long
1238; (clist clist)
1239; (row int))
1240
1241; (defun clist-row-data (clist row)
1242; (find-user-data (%clist-get-row-data clist row)))
1243
1244; (define-foreign %clist-find-row-from-data () int
1245; (clist clist)
1246; (id unsigned-long))
1247
1248; (define-foreign clist-select-row (clist row &optional (column -1)) nil
1249; (clist clist)
1250; (row int)
1251; (column int))
1252
1253; (define-foreign clist-unselect-row (clist row &optional (column -1)) nil
1254; (clist clist)
1255; (row int)
1256; (column int))
1257
1258; (define-foreign clist-undo-selection () nil
1259; (clist clist))
1260
1261; (define-foreign clist-clear () nil
1262; (clist clist))
1263
1264; (define-foreign ("gtk_clist_get_selection_info" clist-selection-info) () int
1265; (clist clist)
1266; (x int)
1267; (y int)
1268; (row int :out)
1269; (column int :out))
1270
1271; (define-foreign clist-select-all () nil
1272; (clist clist))
1273
1274; (define-foreign clist-unselect-all () nil
1275; (clist clist))
1276
1277; (define-foreign clist-swap-rows () nil
1278; (clist clist)
1279; (row1 int)
1280; (row2 int))
1281
1282; (define-foreign ("gtk_clist_row_move" clist-move-row) () nil
1283; (clist clist)
1284; (source-row int)
1285; (dest-row int))
1286
1287; ;(define-foreign clist-set-compare-func ...)
1288
1289; (define-foreign clist-sort () nil
1290; (clist clist))
1291
1292; (define-foreign ("gtk_clist_set_auto_sort"
1293; (setf clist-auto-sort-p)) () nil
1294; (clist clist)
1295; (auto-sort boolean))
1296
1297; ;; cl-gtk.c
1298; (define-foreign clist-auto-sort-p () boolean
1299; (clist clist))
1300
1301; (defun clist-focus-row (clist)
1302; (let ((row (%clist-focus-row clist)))
1303; (when (>= row 0)
1304; row)))
1305
1306; ;; cl-gtk.c
1307; (define-foreign clist-selection () (list int)
1308; (clist clist))
1309
1310
1311
1312; ;;; CTree
1313
1314; (define-foreign %ctree-new () ctree
1315; (columns int)
1316; (tree-column int))
1317
1318; (define-foreign %ctree-new-with-titles () ctree
1319; (columns int)
1320; (tree-column int)
1321; (titles pointer))
1322
1323; (defun ctree-new (columns &optional (tree-column 0))
1324; (if (atom columns)
1325; (%ctree-new columns tree-column)
1326; (with-array (titles :initial-contents columns :free-contents t)
1327; (%ctree-new-with-titles (length columns) tree-column titles))))
1328
1329; (define-foreign %ctree-insert-node () ctree-node
1330; (ctree ctree)
1331; (parent (or null ctree-node))
1332; (sibling (or null ctree-node))
1333; (text pointer)
1334; (spacing uint8)
1335; (pixmap-closed (or null gdk:pixmap))
1336; (bitmap-closed (or null gdk:bitmap))
1337; (pixmap-opened (or null gdk:pixmap))
1338; (bitmap-opened (or null gdk:bitmap))
1339; (leaf boolean)
1340; (expaned boolean))
1341
1342; (defun ctree-insert-node (ctree parent sibling text spacing
1343; &key pixmap closed opened leaf expanded)
1344; (multiple-value-bind (pixmap-closed mask-closed)
1345; (%pixmap-create (or closed pixmap))
1346; (multiple-value-bind (pixmap-opened mask-opened)
1347; (%pixmap-create (or opened (and (not leaf) pixmap)))
1348; (with-array (data :clear t :initial-contents text :free-contents t)
1349; (%ctree-insert-node
1350; ctree parent sibling data spacing pixmap-closed mask-closed
1351; pixmap-opened mask-opened leaf expanded)))))
1352
1353; (define-foreign ctree-remove-node () nil
1354; (ctree ctree)
1355; (node ctree-node))
1356
1357; (defun ctree-insert-from-list (ctree parent tree function)
1358; (clist-freeze ctree)
1359; (labels ((insert-node (node parent)
1360; (let ((ctree-node
1361; (ctree-insert-node
1362; ctree parent nil
1363; (make-list (clist-n-columns ctree) :initial-element "")
1364; 0 :leaf (not (rest node)))))
1365; (funcall function ctree-node (car node))
1366; (dolist (child (rest node))
1367; (insert-node child ctree-node)))))
1368; (if parent
1369; (insert-node tree parent)
1370; (dolist (node tree)
1371; (insert-node node nil))))
1372; (clist-thaw ctree))
1373
1374; (defun ctree-map-to-list (ctree node function)
1375; (labels ((map-children (child)
1376; (when child
1377; (let ((sibling (ctree-node-sibling child)))
1378; (cons
1379; (ctree-map-to-list ctree child function)
1380; (map-children sibling))))))
1381; (if node
1382; (cons
1383; (funcall function node)
1384; (map-children (ctree-node-child node)))
1385; (map-children (ctree-nth-node ctree 0)))))
1386
1387
1388; (defun %ctree-apply-recursive (ctree node pre function depth)
1389; (when (and pre node (or (not depth) (<= (ctree-node-level node) depth)))
1390; (funcall function node))
1391
1392; (let ((first-child (if node
1393; (ctree-node-child node)
1394; (ctree-nth-node ctree 0))))
1395; (when (and
1396; first-child
1397; (or (not depth) (<= (ctree-node-level first-child) depth)))
1398; (labels ((foreach-child (child)
1399; (when child
1400; (let ((sibling (ctree-node-sibling child)))
1401; (%ctree-apply-recursive ctree child pre function depth)
1402; (foreach-child sibling)))))
1403; (foreach-child first-child))))
1404
1405; (when (and
1406; (not pre) node (or (not depth) (<= (ctree-node-level node) depth)))
1407; (funcall function node)))
1408
1409; (defun ctree-apply-post-recursive (ctree node function &optional depth)
1410; (%ctree-apply-recursive ctree node nil function depth))
1411
1412; (defun ctree-apply-pre-recursive (ctree node function &optional depth)
1413; (%ctree-apply-recursive ctree node t function depth))
1414
1415; (define-foreign ("gtk_ctree_is_viewable" ctree-node-viewable-p) () boolean
1416; (ctree ctree)
1417; (node ctree-node))
1418
1419; (define-foreign ctree-last () ctree-node
1420; (ctree ctree))
1421
1422; (define-foreign ("gtk_ctree_node_nth" ctree-nth-node) () ctree-node
1423; (ctree ctree)
1424; (row int))
1425
1426; (define-foreign ctree-find () boolean
1427; (ctree ctree)
1428; (node ctree-node)
1429; (child ctree-node))
1430
1431; (define-foreign ("gtk_ctree_is_ancestor" ctree-ancestor-p) () boolean
1432; (ctree ctree)
1433; (node ctree-node)
1434; (child ctree-node))
1435
1436; (define-foreign %ctree-find-by-row-data () int
1437; (clist clist)
1438; (node ctree-node)
1439; (id unsigned-long))
1440
1441; (define-foreign ("gtk_ctree_is_hot_spot" ctree-hot-spot-p) () boolean
1442; (ctree ctree)
1443; (x int)
1444; (y int))
1445
1446; (define-foreign ctree-move () nil
1447; (ctree ctree)
1448; (node ctree-node)
1449; (new-parent ctree-node)
1450; (new-sibling ctree-node))
1451
1452; (define-foreign ctree-expand () nil
1453; (ctree ctree)
1454; (node ctree-node))
1455
1456; (define-foreign ctree-expand-recursive () nil
1457; (ctree ctree)
1458; (node (or null ctree-node)))
1459
1460; (define-foreign ctree-expand-to-depth () nil
1461; (ctree ctree)
1462; (node (or null ctree-node))
1463; (depth int))
1464
1465; (define-foreign ctree-collapse () nil
1466; (ctree ctree)
1467; (node ctree-node))
1468
1469; (define-foreign ctree-collapse-recursive () nil
1470; (ctree ctree)
1471; (node (or null ctree-node)))
1472
1473; (define-foreign ctree-collapse-to-depth () nil
1474; (ctree ctree)
1475; (node (or null ctree-node))
1476; (depth int))
1477
1478; (define-foreign ctree-toggle-expansion () nil
1479; (ctree ctree)
1480; (node ctree-node))
1481
1482; (define-foreign ctree-toggle-expansion-recursive () nil
1483; (ctree ctree)
1484; (node (or null ctree-node)))
1485
1486; (define-foreign ctree-select () nil
1487; (ctree ctree)
1488; (node ctree-node))
1489
1490; (define-foreign ctree-unselect () nil
1491; (ctree ctree)
1492; (node ctree-node))
1493
1494; (define-foreign %ctree-real-select-recursive () nil
1495; (ctree ctree)
1496; (node (or null ctree-node))
1497; (state boolean))
1498
1499; (defun ctree-select-recursive (ctree node)
1500; (%ctree-real-select-recursive ctree node t))
1501
1502; (defun ctree-unselect-recursive (ctree node)
1503; (%ctree-real-select-recursive ctree node nil))
1504
1505; (define-foreign ("gtk_ctree_node_set_text" (setf ctree-cell-text)) () nil
1506; (ctree ctree)
1507; (node ctree-node)
1508; (column int)
1509; (text string))
1510
1511; (define-foreign %ctree-node-set-pixmap () nil
1512; (ctree ctree)
1513; (node ctree-node)
1514; (column int)
1515; (gdk:pixmap gdk:pixmap)
1516; (mask (or null gdk:bitmap)))
1517
1518; (defun (setf ctree-cell-pixmap) (source ctree node column)
1519; (multiple-value-bind (pixmap mask)
1520; (%pixmap-create source)
1521; (%ctree-node-set-pixmap ctree node column pixmap mask)
1522; (values pixmap mask)))
1523
1524; (define-foreign %ctree-node-set-pixtext () nil
1525; (ctree ctree)
1526; (node ctree-node)
1527; (column int)
1528; (text string)
1529; (spacing uint8)
1530; (pixmap gdk:pixmap)
1531; (mask (or null gdk:bitmap)))
1532
1533; (defun ctree-set-cell-pixtext (ctree node column text spacing source)
1534; (multiple-value-bind (pixmap mask)
1535; (%pixmap-create source)
1536; (%ctree-node-set-pixtext ctree node column text spacing pixmap mask)))
1537
1538; (define-foreign %ctree-set-node-info () ctree-node
1539; (ctree ctree)
1540; (node (or null ctree-node))
1541; (text string)
1542; (spacing uint8)
1543; (pixmap-closed (or null gdk:pixmap))
1544; (bitmap-closed (or null gdk:bitmap))
1545; (pixmap-opened (or null gdk:pixmap))
1546; (bitmap-opened (or null gdk:bitmap))
1547; (leaf boolean)
1548; (expaned boolean))
1549
1550; (defun ctree-set-node-info (ctree node text spacing
1551; &key pixmap closed opened leaf expanded)
1552; (multiple-value-bind (pixmap-closed mask-closed)
1553; (%pixmap-create (or closed pixmap))
1554; (multiple-value-bind (pixmap-opened mask-opened)
1555; (%pixmap-create (or opened (and (not leaf) pixmap)))
1556; (%ctree-set-node-info
1557; ctree node text spacing pixmap-closed mask-closed
1558; pixmap-opened mask-opened leaf expanded))))
1559
1560; (define-foreign ("gtk_ctree_node_set_shift" ctree-set-shift) () nil
1561; (ctree ctree)
1562; (node ctree-node)
1563; (column int)
1564; (vertical int)
1565; (horizontal int))
1566
1567; (define-foreign ("gtk_ctree_node_set_selectable"
1568; (setf ctree-selectable-p)) () nil
1569; (ctree ctree)
1570; (node ctree-node)
1571; (selectable boolean))
1572
1573; (define-foreign ("gtk_ctree_node_get_selectable"
1574; ctree-selectable-p) () boolean
1575; (ctree ctree)
1576; (node ctree-node))
1577
1578; (define-foreign ("gtk_ctree_node_get_cell_type" ctree-cell-type) () cell-type
1579; (ctree ctree)
1580; (node ctree-node)
1581; (column int))
1582
1583; (define-foreign %ctree-node-get-text () boolean
1584; (ctree ctree)
1585; (node ctree-node)
1586; (column int)
1587; (text string :out))
1588
1589; (defun ctree-cell-text (ctree node column)
1590; (multiple-value-bind (success text)
1591; (%ctree-node-get-text ctree node column)
1592; (unless success
1593; (error
1594; "Cell in node ~A, column ~D in ~A is not of type :text"
1595; node column ctree))
1596; text))
1597
1598; (define-foreign %ctree-node-get-pixmap () boolean
1599; (ctree ctree)
1600; (node ctree-node)
1601; (column int)
1602; (pixmap gdk:pixmap :out)
1603; (mask gdk:bitmap :out))
1604
1605; (defun ctree-cell-pixmap (ctree node column)
1606; (multiple-value-bind (success pixmap mask)
1607; (%ctree-node-get-pixmap ctree node column)
1608; (unless success
1609; (error
1610; "Cell in node ~A column ~D in ~A is not of type :text"
1611; node column ctree))
1612; (values pixmap mask)))
1613
1614; (define-foreign %ctree-node-get-pixtext () boolean
1615; (ctree ctree)
1616; (node ctree-node)
1617; (column int)
1618; (text string :out)
1619; (spacing unsigned-int :out)
1620; (pixmap gdk:pixmap :out)
1621; (mask gdk:bitmap :out))
1622
1623; (defun ctree-cell-pixtext (ctree node column)
1624; (multiple-value-bind (success text spacing pixmap mask)
1625; (%ctree-node-get-pixtext ctree node column)
1626; (unless success
1627; (error
1628; "Cell in node ~A column ~D in ~A is not of type :text"
1629; node column ctree))
1630; (values text spacing pixmap mask)))
1631
1632; (define-foreign ("gtk_ctree_get_node_info" ctree-node-info) () nil
1633; (ctree ctree)
1634; (node ctree-node)
1635; (text string :out)
1636; (spacing unsigned-int :out)
1637; (pixmap-closed gdk:pixmap :out)
1638; (mask-closed gdk:bitmap :out)
1639; (pixmap-opened gdk:pixmap :out)
1640; (mask-opened gdk:bitmap :out)
1641; (leaf boolean :out)
1642; (expanded boolean :out))
1643
1644; (define-foreign ("gtk_ctree_node_set_row_style"
1645; (setf ctree-row-style)) () nil
1646; (ctree ctree)
1647; (node ctree-node)
1648; (style (or null style)))
1649
1650; (define-foreign ("gtk_ctree_node_get_row_style" ctree-row-style) () style
1651; (ctree ctree)
1652; (node ctree-node))
1653
1654; (define-foreign ("gtk_ctree_node_set_cell_style"
1655; (setf ctree-cell-style)) () nil
1656; (ctree ctree)
1657; (node ctree-node)
1658; (column int)
1659; (style (or null style)))
1660
1661; (define-foreign ("gtk_ctree_node_get_cell_style"
1662; ctree-cell-style) () style
1663; (ctree ctree)
1664; (node ctree-node)
1665; (column int))
1666
1667; (define-foreign %ctree-node-set-foreground () nil
1668; (ctree ctree)
1669; (node ctree-node)
1670; (color gdk:color))
1671
1672; (defun (setf ctree-node-foreground) (color clist row)
1673; (gdk:with-colors ((color color))
1674; (%ctree-node-set-foreground clist row color))
1675; color)
1676
1677; (define-foreign %ctree-node-set-background () nil
1678; (ctree ctree)
1679; (node ctree-node)
1680; (color gdk:color))
1681
1682; (defun (setf ctree-node-background) (color clist row)
1683; (gdk:with-colors ((color color))
1684; (%ctree-node-set-background clist row color))
1685; color)
1686
1687; (define-foreign ("gtk_ctree_node_set_row_data_full" ctree-set-node-data)
1688; (ctree node data &optional destroy-function) nil
1689; (ctree ctree)
1690; (node ctree-node)
1691; ((register-user-data data destroy-function) unsigned-long)
1692; (*destroy-marshal* pointer))
1693
1694; (defun (setf ctree-node-data) (data ctree node)
1695; (ctree-set-node-data ctree node data)
1696; data)
1697
1698; (define-foreign %ctree-node-get-row-data () unsigned-long
1699; (ctree ctree)
1700; (node ctree-node))
1701
1702; (defun ctree-node-data (ctree node)
1703; (find-user-data (%ctree-node-get-row-data ctree node)))
1704
1705; (define-foreign ctree-node-moveto () nil
1706; (ctree ctree)
1707; (node ctree-node)
1708; (column int)
1709; (row-aling single-float)
1710; (column-aling single-float))
1711
1712; (define-foreign ("gtk_ctree_node_is_visible"
1713; ctree-node-visibility) () visibility
1714; (ctree ctree)
1715; (node ctree-node))
1716
1717; (define-foreign ctree-sort-node () nil
1718; (ctree ctree)
1719; (node ctree-node))
1720
1721; (define-foreign ctree-sort-recursive (ctree &optional node) nil
1722; (ctree ctree)
1723; (node (or null ctree-node)))
1724
1725; ;; cl-gtk.c
1726; (define-foreign ("gtk_clist_selection" ctree-selection) () (list ctree-node)
1727; (ctree ctree))
1728
1729; ;; cl-gtk.c
1730; (define-foreign ctree-node-leaf-p () boolean
1731; (node ctree-node))
1732
1733; ;; cl-gtk.c
1734; (define-foreign ctree-node-parent () ctree-node
1735; (node ctree-node))
1736
1737; ;; cl-gtk.c
1738; (define-foreign ctree-node-child () ctree-node
1739; (node ctree-node))
1740
1741; ;; cl-gtk.c
1742; (define-foreign ctree-node-sibling () ctree-node
1743; (node ctree-node))
1744
1745; ;; cl-gtk.c
1746; (define-foreign ctree-node-level () int
1747; (node ctree-node))
1748
1749
1750;;; Fixed
1751
1752; (define-foreign fixed-new () fixed)
1753
1754; (define-foreign fixed-put () nil
1755; (fixed fixed)
1756; (widget widget)
1757; (x int) (y int16))
1758
1759; (define-foreign fixed-move () nil
1760; (fixed fixed)
1761; (widget widget)
1762; (x int16) (y int16))
1763
1764
1765
1766; ;;; Notebook
1767
1768; (define-foreign notebook-new () notebook)
1769
1770; (define-foreign ("gtk_notebook_insert_page_menu" notebook-insert-page)
1771; (notebook position child tab-label &optional menu-label) nil
1772; (notebook notebook)
1773; (child widget)
1774; ((if (stringp tab-label)
1775; (label-new tab-label)
1776; tab-label) widget)
1777; ((if (stringp menu-label)
1778; (label-new menu-label)
1779; menu-label) (or null widget))
1780; (position int))
1781
1782; (defun notebook-append-page (notebook child tab-label &optional menu-label)
1783; (notebook-insert-page notebook -1 child tab-label menu-label))
1784
1785; (defun notebook-prepend-page (notebook child tab-label &optional menu-label)
1786; (notebook-insert-page notebook 0 child tab-label menu-label))
1787
1788; (define-foreign notebook-remove-page () nil
1789; (notebook notebook)
1790; (page-num int))
1791
1792; (defun notebook-current-page-num (notebook)
1793; (let ((page-num (notebook-current-page notebook)))
1794; (if (= page-num -1)
1795; nil
1796; page-num)))
1797
1798; (define-foreign ("gtk_notebook_get_nth_page" notebook-nth-page) () widget
1799; (notebook notebook)
1800; (page-num int))
1801
1802; (define-foreign %notebook-page-num () int
1803; (notebook notebook)
1804; (page-num int))
1805
1806; (defun notebook-child-page-num (notebook child)
1807; (let ((page-num (%notebook-page-num notebook child)))
1808; (if (= page-num -1)
1809; nil
1810; page-num)))
1811
1812; (define-foreign notebook-next-page () nil
1813; (notebook notebook))
1814
1815; (define-foreign notebook-prev-page () nil
1816; (notebook notebook))
1817
1818; (define-foreign notebook-popup-enable () nil
1819; (notebook notebook))
1820
1821; (define-foreign notebook-popup-disable () nil
1822; (notebook notebook))
1823
1824; (define-foreign
1825; ("gtk_notebook_get_tab_label" notebook-tab-label) (notebook ref) widget
1826; (notebook notebook)
1827; ((if (widget-p ref)
1828; ref
1829; (notebook-nth-page notebook ref))
1830; widget))
1831
1832; (define-foreign %notebook-set-tab-label () nil
1833; (notebook notebook)
1834; (reference widget)
1835; (tab-label widget))
1836
1837; (defun (setf notebook-tab-label) (tab-label notebook reference)
1838; (let ((tab-label-widget (if (stringp tab-label)
1839; (label-new tab-label)
1840; tab-label)))
1841; (%notebook-set-tab-label
1842; notebook
1843; (if (widget-p reference)
1844; reference
1845; (notebook-nth-page notebook reference))
1846; tab-label-widget)
1847; (when (stringp tab-label)
1848; (widget-unref tab-label-widget))
1849; tab-label-widget))
1850
1851; (define-foreign
1852; ("gtk_notebook_get_menu_label" notebook-menu-label) (notebook ref) widget
1853; (notebook notebook)
1854; ((if (widget-p ref)
1855; ref
1856; (notebook-nth-page notebook ref))
1857; widget))
1858
1859; (define-foreign %notebook-set-menu-label () nil
1860; (notebook notebook)
1861; (reference widget)
1862; (menu-label widget))
1863
1864; (defun (setf notebook-menu-label) (menu-label notebook reference)
1865; (let ((menu-label-widget (if (stringp menu-label)
1866; (label-new menu-label)
1867; menu-label)))
1868; (%notebook-set-menu-label
1869; notebook
1870; (if (widget-p reference)
1871; reference
1872; (notebook-nth-page notebook reference))
1873; menu-label-widget)
1874; (when (stringp menu-label)
1875; (widget-unref menu-label-widget))
1876; menu-label-widget))
1877
1878; (define-foreign notebook-query-tab-label-packing (notebook ref) nil
1879; (notebook notebook)
1880; ((if (widget-p ref)
1881; ref
1882; (notebook-nth-page notebook ref))
1883; widget)
1884; (expand boolean :out)
1885; (fill boolean :out)
1886; (pack-type pack-type :out))
1887
1888; (define-foreign
1889; notebook-set-tab-label-packing (notebook ref expand fill pack-type) nil
1890; (notebook notebook)
1891; ((if (widget-p ref)
1892; ref
1893; (notebook-nth-page notebook ref))
1894; widget)
1895; (expand boolean)
1896; (fill boolean)
1897; (pack-type pack-type))
1898
1899; (define-foreign notebook-reorder-child () nil
1900; (notebook notebook)
1901; (child widget)
1902; (position int))
1903
1904
1905
1906; ;;; Font selection
1907
1908
1909
1910
1911; ;;; Paned
1912
1913; (define-foreign paned-add1 () nil
1914; (paned paned)
1915; (child widget))
1916
1917; (define-foreign paned-add2 () nil
1918; (paned paned)
1919; (child widget))
1920
1921; (define-foreign paned-pack1 () nil
1922; (paned paned)
1923; (child widget)
1924; (resize boolean)
1925; (shrink boolean))
1926
1927; (define-foreign paned-pack2 () nil
1928; (paned paned)
1929; (child widget)
1930; (resize boolean)
1931; (shrink boolean))
1932
1933; ; (define-foreign ("gtk_paned_set_position" (setf paned-position)) () nil
1934; ; (paned paned)
1935; ; (position int))
1936
1937; ;; cl-gtk.c
1938; (define-foreign paned-child1 () widget
1939; (paned paned)
1940; (resize boolean :out)
1941; (shrink boolean :out))
1942
1943; ;; cl-gtk.c
1944; (define-foreign paned-child2 () widget
1945; (paned paned)
1946; (resize boolean :out)
1947; (shrink boolean :out))
1948
1949; (define-foreign vpaned-new () vpaned)
1950
1951; (define-foreign hpaned-new () hpaned)
1952
1953
1954
1955; ;;; Layout
1956
1957; (define-foreign layout-new (&optional hadjustment vadjustment) layout
1958; (hadjustment (or null adjustment))
1959; (vadjustment (or null adjustment)))
1960
1961; (define-foreign layout-put () nil
1962; (layout layout)
1963; (widget widget)
1964; (x int) (y int))
1965
1966; (define-foreign layout-move () nil
1967; (layout layout)
1968; (widget widget)
1969; (x int) (y int))
1970
1971; (define-foreign %layout-set-size () nil
1972; (layout layout)
1973; (width int)
1974; (height int))
1975
1976; (defun (setf layout-size) (size layout)
1977; (%layout-set-size layout (svref size 0) (svref size 1))
1978; (values (svref size 0) (svref size 1)))
1979
1980; ;; cl-gtk.c
1981; (define-foreign layout-size () nil
1982; (layout layout)
1983; (width int :out)
1984; (height int :out))
1985
1986; (define-foreign layout-freeze () nil
1987; (layout layout))
1988
1989; (define-foreign layout-thaw () nil
1990; (layout layout))
1991
1992; (define-foreign layout-offset () nil
1993; (layout layout)
1994; (x int :out)
1995; (y int :out))
1996
1997
1998
1999;;; List
2000
2001; (define-foreign list-new () list-widget)
2002
2003; (define-foreign list-insert-items () nil
2004; (list list-widget)
2005; (items (list list-item))
2006; (position int))
2007
2008; (define-foreign list-append-items () nil
2009; (list list-widget)
2010; (items (double-list list-item)))
2011
2012; (define-foreign list-prepend-items () nil
2013; (list list-widget)
2014; (items (double-list list-item)))
2015
2016; (define-foreign %list-remove-items () nil
2017; (list list-widget)
2018; (items (double-list list-item)))
2019
2020; (define-foreign %list-remove-items-no-unref () nil
2021; (list list-widget)
2022; (items (double-list list-item)))
2023
2024; (defun list-remove-items (list items &key no-unref)
2025; (if no-unref
2026; (%list-remove-items-no-unref list items)
2027; (%list-remove-items list items)))
2028
2029; (define-foreign list-clear-items () nil
2030; (list list-widget)
2031; (start int)
2032; (end int))
2033
2034; (define-foreign list-select-item () nil
2035; (list list-widget)
2036; (item int))
2037
2038; (define-foreign list-unselect-item () nil
2039; (list list-widget)
2040; (item int))
2041
2042; (define-foreign list-select-child () nil
2043; (list list-widget)
2044; (child widget))
2045
2046; (define-foreign list-unselect-child () nil
2047; (list list-widget)
2048; (child widget))
2049
2050; (define-foreign list-child-position () int
2051; (list list-widget)
2052; (child widget))
2053
2054; (define-foreign list-extend-selection () nil
2055; (list list-widget)
2056; (scroll-type scroll-type)
2057; (position single-float)
2058; (auto-start-selection boolean))
2059
2060; (define-foreign list-start-selection () nil
2061; (list list-widget))
2062
2063; (define-foreign list-end-selection () nil
2064; (list list-widget))
2065
2066; (define-foreign list-select-all () nil
2067; (list list-widget))
2068
2069; (define-foreign list-unselect-all () nil
2070; (list list-widget))
2071
2072; (define-foreign list-scroll-horizontal () nil
2073; (list list-widget)
2074; (scroll-type scroll-type)
2075; (position single-float))
2076
2077; (define-foreign list-scroll-vertical () nil
2078; (list list-widget)
2079; (scroll-type scroll-type)
2080; (position single-float))
2081
2082; (define-foreign list-toggle-add-mode () nil
2083; (list list-widget))
2084
2085; (define-foreign list-toggle-focus-row () nil
2086; (list list-widget))
2087
2088; (define-foreign list-toggle-row () nil
2089; (list list-widget)
2090; (item list-item))
2091
2092; (define-foreign list-undo-selection () nil
2093; (list list-widget))
2094
2095; (define-foreign list-end-drag-selection () nil
2096; (list list-widget))
2097
2098; ;; cl-gtk.c
2099; (define-foreign list-selection () (double-list list-item)
2100; (list list-widget))
2101
2102
2103
2104;;; Menu shell
2105
2106; (define-foreign menu-shell-insert () nil
2107; (menu-shell menu-shell)
2108; (menu-item menu-item)
2109; (position int))
2110
2111; (defun menu-shell-append (menu-shell menu-item)
2112; (menu-shell-insert menu-shell menu-item -1))
2113
2114; (defun menu-shell-prepend (menu-shell menu-item)
2115; (menu-shell-insert menu-shell menu-item 0))
2116
2117; (define-foreign menu-shell-deactivate () nil
2118; (menu-shell menu-shell))
2119
2120; (define-foreign menu-shell-select-item () nil
2121; (menu-shell menu-shell)
2122; (menu-item menu-item))
2123
2124; (define-foreign menu-shell-deselect () nil
2125; (menu-shell menu-shell))
2126
2127; (define-foreign menu-shell-activate-item () nil
2128; (menu-shell menu-shell)
2129; (menu-item menu-item)
2130; (fore-deactivate boolean))
2131
2132
2133
2134; ;;; Menu bar
2135
2136; (define-foreign menu-bar-new () menu-bar)
2137
2138; (define-foreign menu-bar-insert () nil
2139; (menu-bar menu-bar)
2140; (menu menu)
2141; (position int))
2142
2143; (defun menu-bar-append (menu-bar menu)
2144; (menu-bar-insert menu-bar menu -1))
2145
2146; (defun menu-bar-prepend (menu-bar menu)
2147; (menu-bar-insert menu-bar menu 0))
2148
2149
2150
2151; ;;; Menu
2152
2153; (define-foreign menu-new () menu)
2154
2155; (defun menu-insert (menu menu-item position)
2156; (menu-shell-insert menu menu-item position))
2157
2158; (defun menu-append (menu menu-item)
2159; (menu-shell-append menu menu-item))
2160
2161; (defun menu-prepend (menu menu-item)
2162; (menu-shell-prepend menu menu-item))
2163
2164; ;(defun menu-popup ...)
2165
2166; (define-foreign menu-reposition () nil
2167; (menu menu))
2168
2169; (define-foreign menu-popdown () nil
2170; (menu menu))
2171
2172; (define-foreign ("gtk_menu_get_active" menu-active) () widget
2173; (menu menu))
2174
2175; (define-foreign ("gtk_menu_set_active" (setf menu-active)) () nil
2176; (menu menu)
2177; (index unsigned-int))
2178
2179; ;(defun menu-attach-to-widget ...)
2180
2181; (define-foreign menu-detach () nil
2182; (menu menu))
2183
2184; (define-foreign ("gtk_menu_get_attach_widget" menu-attach-widget) () widget
2185; (menu menu))
2186
2187; (define-foreign menu-reorder-child () nil
2188; (menu menu)
2189; (menu-item menu-item)
2190; (position int))
2191
2192
2193
2194;;; Packer
2195
2196; (define-foreign packer-new () packer)
2197
2198; (define-foreign packer-add
2199; (packer child side anchor
2200; &key
2201; options
2202; (border-width (packer-default-border-width packer))
2203; (pad-x (packer-default-pad-x packer))
2204; (pad-y (packer-default-pad-y packer))
2205; (ipad-x (packer-default-ipad-x packer))
2206; (ipad-y (packer-default-ipad-y packer))) nil
2207; (packer packer)
2208; (child widget)
2209; (side side-type)
2210; (anchor anchor-type)
2211; (options packer-options)
2212; (border-width unsigned-int)
2213; (pad-x unsigned-int)
2214; (pad-y unsigned-int)
2215; (ipad-x unsigned-int)
2216; (ipad-y unsigned-int))
2217
2218; (define-foreign packer-set-child-packing () nil
2219; (packer packer)
2220; (child widget)
2221; (side side-type)
2222; (anchor anchor-type)
2223; (options packer-options)
2224; (border-width unsigned-int)
2225; (pad-x unsigned-int)
2226; (pad-y unsigned-int)
2227; (ipad-x unsigned-int)
2228; (ipad-y unsigned-int))
2229
2230; (define-foreign packer-reorder-child () nil
2231; (packer packer)
2232; (child widget)
2233; (position int))
2234
2235
2236
2237; ;;; Table
2238
2239; (define-foreign table-new () table
2240; (rows unsigned-int)
2241; (columns unsigned-int)
2242; (homogeneous boolean))
2243
2244; (define-foreign table-resize () nil
2245; (table table)
2246; (rows unsigned-int)
2247; (columns unsigned-int))
2248
2249; (define-foreign table-attach (table child left right top bottom
2250; &key (x-options '(:expand :fill))
2251; (y-options '(:expand :fill))
2252; (x-padding 0) (y-padding 0)) nil
2253; (table table)
2254; (child widget)
2255; (left unsigned-int)
2256; (right unsigned-int)
2257; (top unsigned-int)
2258; (bottom unsigned-int)
2259; (x-options attach-options)
2260; (y-options attach-options)
2261; (x-padding unsigned-int)
2262; (y-padding unsigned-int))
2263
2264; (define-foreign ("gtk_table_set_row_spacing" (setf table-row-spacing)) () nil
2265; (table table)
2266; (row unsigned-int)
2267; (spacing unsigned-int))
2268
2269; ;; cl-gtk.c
2270; (define-foreign table-row-spacing (table row) unsigned-int
2271; (table table)
2272; ((progn
2273; (assert (and (>= row 0) (< row (table-rows table))))
2274; row) unsigned-int))
2275
2276; (define-foreign ("gtk_table_set_col_spacing"
2277; (setf table-column-spacing)) () nil
2278; (table table)
2279; (col unsigned-int)
2280; (spacing unsigned-int))
2281
2282; ;; cl-gtk.c
2283; (define-foreign table-column-spacing (table col) unsigned-int
2284; (table table)
2285; ((progn
2286; (assert (and (>= col 0) (< col (table-columns table))))
2287; col) unsigned-int))
2288
2289
2290; (defun %set-table-child-option (object slot flag value)
2291; (let ((options (container-child-slot-value object slot)))
2292; (cond
2293; ((and value (not (member flag options)))
2294; (setf (container-child-slot-value object slot) (cons flag options)))
2295; ((and (not value) (member flag options))
2296; (setf
2297; (container-child-slot-value object slot) (delete flag options))))))
2298
2299
2300; (macrolet ((define-option-accessor (name slot flag)
2301; `(progn
2302; (defun ,name (object)
2303; (member ,flag (container-child-slot-value object ,slot)))
2304; (defun (setf ,name) (value object)
2305; (%set-table-child-option object ,slot ,flag value)))))
2306; (define-option-accessor table-child-x-expand-p :x-options :expand)
2307; (define-option-accessor table-child-y-expand-p :y-options :expand)
2308; (define-option-accessor table-child-x-shrink-p :x-options :shrink)
2309; (define-option-accessor table-child-y-shrink-p :y-options :shrink)
2310; (define-option-accessor table-child-x-fill-p :x-options :fill)
2311; (define-option-accessor table-child-y-fill-p :y-options :fill))
2312
2313
2314
2315; ;;; Toolbar
2316
2317; (define-foreign toolbar-new () toolbar
2318; (orientation orientation)
2319; (style toolbar-style))
2320
2321
2322; ;; cl-gtk.c
2323; (define-foreign toolbar-num-children () int
2324; (toolbar toolbar))
2325
2326; (defun %toolbar-position-num (toolbar position)
2327; (case position
2328; (:prepend 0)
2329; (:append (toolbar-num-children toolbar))
2330; (t
2331; (assert (and (>= position 0) (< position (toolbar-num-children toolbar))))
2332; position)))
2333
2334; (define-foreign %toolbar-insert-element () widget
2335; (toolbar toolbar)
2336; (type toolbar-child-type)
2337; (widget (or null widget))
2338; (text string)
2339; (tooltip-text string)
2340; (tooltip-private-text string)
2341; (icon (or null widget))
2342; (nil null)
2343; (nil null)
2344; (position int))
2345
2346; (defun toolbar-insert-element (toolbar position
2347; &key tooltip-text tooltip-private-text
2348; type widget icon text callback)
2349; (let* ((icon-widget (typecase icon
2350; ((or null widget) icon)
2351; (t (pixmap-new icon))))
2352; (toolbar-child
2353; (%toolbar-insert-element
2354; toolbar (or type (and widget :widget) :button)
2355; widget text tooltip-text tooltip-private-text icon-widget
2356; (%toolbar-position-num toolbar position))))
2357; (when callback
2358; (signal-connect toolbar-child 'clicked callback))
2359; toolbar-child))
2360
2361; (defun toolbar-append-element (toolbar &key tooltip-text tooltip-private-text
2362; type widget icon text callback)
2363; (toolbar-insert-element
2364; toolbar :append :type type :widget widget :icon icon :text text
2365; :tooltip-text tooltip-text :tooltip-private-text tooltip-private-text
2366; :callback callback))
2367
2368; (defun toolbar-prepend-element (toolbar &key tooltip-text tooltip-private-text
2369; type widget icon text callback)
2370; (toolbar-insert-element
2371; toolbar :prepend :type type :widget widget :icon icon :text text
2372; :tooltip-text tooltip-text :tooltip-private-text tooltip-private-text
2373; :callback callback))
2374
2375; (defun toolbar-insert-space (toolbar position)
2376; (toolbar-insert-element toolbar position :type :space))
2377
2378; (defun toolbar-append-space (toolbar)
2379; (toolbar-insert-space toolbar :append))
2380
2381; (defun toolbar-prepend-space (toolbar)
2382; (toolbar-insert-space toolbar :prepend))
2383
2384; (defun toolbar-insert-widget (toolbar widget position &key tooltip-text
2385; tooltip-private-text callback)
2386; (toolbar-insert-element
2387; toolbar position :widget widget :tooltip-text tooltip-text
2388; :tooltip-private-text tooltip-private-text :callback callback))
2389
2390; (defun toolbar-append-widget (toolbar widget &key tooltip-text
2391; tooltip-private-text callback)
2392; (toolbar-insert-widget
2393; toolbar widget :append :tooltip-text tooltip-text
2394; :tooltip-private-text tooltip-private-text :callback callback))
2395
2396; (defun toolbar-prepend-widget (toolbar widget &key tooltip-text
2397; tooltip-private-text callback)
2398; (toolbar-insert-widget
2399; toolbar widget :prepend :tooltip-text tooltip-text
2400; :tooltip-private-text tooltip-private-text :callback callback))
2401
2402; (defun toolbar-insert-item (toolbar text icon position &key tooltip-text
2403; tooltip-private-text callback)
2404; (toolbar-insert-element
2405; toolbar position :text text :icon icon :callback callback
2406; :tooltip-text tooltip-text :tooltip-private-text tooltip-private-text))
2407
2408; (defun toolbar-append-item (toolbar text icon &key tooltip-text
2409; tooltip-private-text callback)
2410; (toolbar-insert-item
2411; toolbar text icon :append :callback callback
2412; :tooltip-text tooltip-text :tooltip-private-text tooltip-private-text))
2413
2414
2415; (defun toolbar-prepend-item (toolbar text icon &key tooltip-text
2416; tooltip-private-text callback)
2417; (toolbar-insert-item
2418; toolbar text icon :prepend :callback callback
2419; :tooltip-text tooltip-text :tooltip-private-text tooltip-private-text))
2420
2421; (defun toolbar-enable-tooltips (toolbar)
2422; (setf (toolbar-tooltips-p toolbar) t))
2423
2424; (defun toolbar-disable-tooltips (toolbar)
2425; (setf (toolbar-tooltips-p toolbar) nil))
2426
2427
2428
2429;;; Tree
2430
2431(define-foreign tree-new () tree)
2432
2433(define-foreign tree-append () nil
2434 (tree tree)
2435 (tree-item tree-item))
2436
2437(define-foreign tree-prepend () nil
2438 (tree tree)
2439 (tree-item tree-item))
2440
2441(define-foreign tree-insert () nil
2442 (tree tree)
2443 (tree-item tree-item)
2444 (position int))
2445
2446; (define-foreign tree-remove-items () nil
2447; (tree tree)
2448; (items (double-list tree-item)))
2449
2450(define-foreign tree-clear-items () nil
2451 (tree tree)
2452 (start int)
2453 (end int))
2454
2455(define-foreign tree-select-item () nil
2456 (tree tree)
2457 (item int))
2458
2459(define-foreign tree-unselect-item () nil
2460 (tree tree)
2461 (item int))
2462
2463(define-foreign tree-select-child () nil
2464 (tree tree)
2465 (tree-item tree-item))
2466
2467(define-foreign tree-unselect-child () nil
2468 (tree tree)
2469 (tree-item tree-item))
2470
2471(define-foreign tree-child-position () int
2472 (tree tree)
2473 (tree-item tree-item))
2474
2475(defun root-tree-p (tree)
2476 (eq (tree-root-tree tree) tree))
2477
2478;; cl-gtk.c
2479(define-foreign tree-selection () (double-list tree-item)
2480 (tree tree))
2481
2482
2483
2484;;; Calendar
2485
2486(define-foreign calendar-new () calendar)
2487
2488(define-foreign calendar-select-month () int
2489 (calendar calendar)
2490 (month unsigned-int)
2491 (year unsigned-int))
2492
2493(define-foreign calendar-select-day () nil
2494 (calendar calendar)
2495 (day unsigned-int))
2496
2497(define-foreign calendar-mark-day () int
2498 (calendar calendar)
2499 (day unsigned-int))
2500
2501(define-foreign calendar-unmark-day () int
2502 (calendar calendar)
2503 (day unsigned-int))
2504
2505(define-foreign calendar-clear-marks () nil
2506 (calendar calendar))
2507
2508(define-foreign calendar-display-options () nil
2509 (calendar calendar)
2510 (options calendar-display-options))
2511
2512(define-foreign ("gtk_calendar_get_date" calendar-date) () nil
2513 (calendar calendar)
2514 (year unsigned-int :out)
2515 (month unsigned-int :out)
2516 (day unsigned-int :out))
2517
2518(define-foreign calendar-freeze () nil
2519 (calendar calendar))
2520
2521(define-foreign calendar-thaw () nil
2522 (calendar calendar))
2523
2524
2525
2526;;; Drawing area
2527
2528; (define-foreign drawing-area-new () drawing-area)
2529
2530; (define-foreign ("gtk_drawing_area_size" %drawing-area-set-size) () nil
2531; (drawing-area drawing-area)
2532; (width int)
2533; (height int))
2534
2535; (defun (setf drawing-area-size) (size drawing-area)
2536; (%drawing-area-set-size drawing-area (svref size 0) (svref size 1))
2537; (values (svref size 0) (svref size 1)))
2538
2539; ;; cl-gtk.c
2540; (define-foreign ("gtk_drawing_area_get_size" drawing-area-size) () nil
2541; (drawing-area drawing-area)
2542; (width int :out)
2543; (height int :out))
2544
2545
2546
2547; ;;; Curve
2548
2549
2550
2551; ;;; Editable
2552
2553; (define-foreign editable-select-region () nil
2554; (editable editable)
2555; (start int)
2556; (end int))
2557
2558; (define-foreign editable-insert-text
2559; (editable text &optional (position 0)) nil
2560; (editable editable)
2561; (text string)
2562; ((length text) int)
2563; (position int))
2564
2565; (define-foreign editable-delete-text (editable &optional (start 0) end) nil
2566; (editable editable)
2567; (start int)
2568; ((or end -1) int))
2569
2570; (define-foreign ("gtk_editable_get_chars" editable-text)
2571; (editable &optional (start 0) end) string
2572; (editable editable)
2573; (start int)
2574; ((or end -1) int))
2575
2576; (defun (setf editable-text) (text editable)
2577; (editable-delete-text editable)
2578; (when text
2579; (editable-insert-text editable text))
2580; text)
2581
2582; (define-foreign editable-cut-clipboard () nil
2583; (editable editable))
2584
2585; (define-foreign editable-copy-clipboard () nil
2586; (editable editable))
2587
2588; (define-foreign editable-paste-clipboard () nil
2589; (editable editable))
2590
2591; (define-foreign editable-claim-selection () nil
2592; (editable editable)
2593; (claim boolean)
2594; (time unsigned-int))
2595
2596; (define-foreign editable-delete-selection () nil
2597; (editable editable))
2598
2599; (define-foreign editable-changed () nil
2600; (editable editable))
2601
2602
2603
2604; ;;; Entry
2605
2606; (define-foreign %entry-new() entry)
2607
2608; (define-foreign %entry-new-with-max-length () entry
2609; (max uint16))
2610
2611; (defun entry-new (&optional max)
2612; (if max
2613; (%entry-new-with-max-length max)
2614; (%entry-new)))
2615
2616; (define-foreign entry-append-text () nil
2617; (entry entry)
2618; (text string))
2619
2620; (define-foreign entry-prepend-text () nil
2621; (entry entry)
2622; (text string))
2623
2624; (define-foreign entry-select-region () nil
2625; (entry entry)
2626; (start int)
2627; (end int))
2628
2629
2630
2631; ;;; Spin button
2632
2633; (define-foreign spin-button-new () spin-button
2634; (adjustment adjustment)
2635; (climb-rate single-float)
2636; (digits unsigned-int))
2637
2638; (defun spin-button-value-as-int (spin-button)
2639; (round (spin-button-value spin-button)))
2640
2641; (define-foreign spin-button-spin () nil
2642; (spin-button spin-button)
2643; (direction spin-type)
2644; (increment single-float))
2645
2646; (define-foreign spin-button-update () nil
2647; (spin-button spin-button))
2648
2649
2650
2651; ;;; Text
2652
2653; (define-foreign text-new (&optional hadjustment vadjustment) text
2654; (hadjustment (or null adjustment))
2655; (vadjustment (or null adjustment)))
2656
2657; (define-foreign text-freeze () nil
2658; (text text))
2659
2660; (define-foreign text-thaw () nil
2661; (text text))
2662
2663; (define-foreign %text-insert () nil
2664; (text text)
2665; (font (or null gdk:font))
2666; (fore (or null gdk:color))
2667; (back (or null gdk:color))
2668; (string string)
2669; (-1 int))
2670
2671; (defun text-insert (text string &key font foreground background (start 0) end)
2672; (let ((real-font (gdk:ensure-font font)))
2673; (gdk:with-colors ((fore-color foreground)
2674; (back-color background))
2675; (%text-insert
2676; text real-font fore-color back-color (subseq string start end))
2677; (gdk:font-maybe-unref real-font font))))
2678
2679; (define-foreign text-backward-delete () int
2680; (text text)
2681; (n-chars unsigned-int))
2682
2683; (define-foreign text-forward-delete () nil
2684; (text text)
2685; (nchars unsigned-int))
2686
2687
2688
2689; ;;; Ruler
2690
2691; (define-foreign ruler-set-range () nil
2692; (ruler ruler)
2693; (lower single-float)
2694; (upper single-float)
2695; (position single-float)
2696; (max-size single-float))
2697
2698; (define-foreign ruler-draw-ticks () nil
2699; (ruler ruler))
2700
2701; (define-foreign ruler-draw-pos () nil
2702; (ruler ruler))
2703
2704; (define-foreign hruler-new () hruler)
2705
2706; (define-foreign vruler-new () vruler)
2707
2708
2709
2710; ;;; Range
2711
2712; (define-foreign range-draw-background () nil
2713; (range range))
2714
2715; (define-foreign range-clear-background () nil
2716; (range range))
2717
2718; (define-foreign range-draw-trough () nil
2719; (range range))
2720
2721; (define-foreign range-draw-slider () nil
2722; (range range))
2723
2724; (define-foreign range-draw-step-forw () nil
2725; (range range))
2726
2727; (define-foreign range-slider-update () nil
2728; (range range))
2729
2730; (define-foreign range-trough-click () int
2731; (range range)
2732; (x int)
2733; (y int)
2734; (jump-perc single-float :out))
2735
2736; (define-foreign range-default-hslider-update () nil
2737; (range range))
2738
2739; (define-foreign range-default-vslider-update () nil
2740; (range range))
2741
2742; (define-foreign range-default-htrough-click () int
2743; (range range)
2744; (x int)
2745; (y int)
2746; (jump-perc single-float :out))
2747
2748; (define-foreign range-default-vtrough-click () int
2749; (range range)
2750; (x int)
2751; (y int)
2752; (jump-perc single-float :out))
2753
2754; (define-foreign range-default-hmotion () int
2755; (range range)
2756; (x-delta int)
2757; (y-delta int))
2758
2759; (define-foreign range-default-vmotion () int
2760; (range range)
2761; (x-delta int)
2762; (y-delta int))
2763
2764
2765
2766; ;;; Scale
2767
2768; (define-foreign scale-draw-value () nil
2769; (scale scale))
2770
2771; (define-foreign hscale-new () hscale
2772; (adjustment adjustment))
2773
2774; (define-foreign vscale-new () hscale
2775; (adjustment adjustment))
2776
2777
2778
2779; ;;; Scrollbar
2780
2781; (define-foreign hscrollbar-new () hscrollbar
2782; (adjustment adjustment))
2783
2784; (define-foreign vscrollbar-new () vscrollbar
2785; (adjustment adjustment))
2786
2787
2788
2789; ;;; Separator
2790
2791; (define-foreign vseparator-new () vseparator)
2792
2793; (define-foreign hseparator-new () hseparator)
2794
2795
2796
2797; ;;; Preview
2798
2799
2800
2801; ;;; Progress
2802
2803; (define-foreign progress-configure () adjustment
2804; (progress progress)
2805; (value single-float)
2806; (min single-float)
2807; (max single-float))
2808
2809; (define-foreign ("gtk_progress_get_text_from_value"
2810; progress-text-from-value) () string
2811; (progress progress))
2812
2813; (define-foreign ("gtk_progress_get_percentage_from_value"
2814; progress-percentage-from-value) () single-float
2815; (progress progress))
2816
2817
2818
2819; ;;; Progress bar
2820
2821; (define-foreign %progress-bar-new () progress-bar)
2822
2823; (define-foreign %progress-bar-new-with-adjustment () progress-bar
2824; (adjustment adjustment))
2825
2826; (defun progress-bar-new (&optional adjustment)
2827; (if adjustment
2828; (%progress-bar-new-with-adjustment adjustment)
2829; (%progress-bar-new)))
2830
2831; (define-foreign progress-bar-update () nil
2832; (progress-bar progress-bar)
2833; (percentage single-float))
2834
2835
2836
2837;;; Adjustment
2838
2839(define-foreign adjustment-new () adjustment
2840 (value single-float)
2841 (lower single-float)
2842 (upper single-float)
2843 (step-increment single-float)
2844 (page-increment single-float)
2845 (page-size single-float))
2846
2847(define-foreign adjustment-changed () nil
2848 (adjustment adjustment))
2849
2850(define-foreign adjustment-value-changed () nil
2851 (adjustment adjustment))
2852
2853(define-foreign adjustment-clamp-page () nil
2854 (adjustment adjustment)
2855 (lower single-float)
2856 (upper single-float))
2857
2858
2859
2860;;; Tooltips
2861
2862; (define-foreign tooltips-new () tooltips)
2863
2864; (define-foreign tooltips-enable () nil
2865; (tooltips tooltips))
2866
2867; (define-foreign tooltips-disable () nil
2868; (tooltips tooltips))
2869
2870; (define-foreign tooltips-set-tip () nil
2871; (tooltips tooltips)
2872; (widget widget)
2873; (tip-text string)
2874; (tip-private string))
2875
2876; (declaim (inline tooltips-set-colors-real))
2877; (define-foreign ("gtk_tooltips_set_colors" tooltips-set-colors-real) () nil
2878; (tooltips tooltips)
2879; (background gdk:color)
2880; (foreground gdk:color))
2881
2882; (defun tooltips-set-colors (tooltips background foreground)
2883; (gdk:with-colors ((background background)
2884; (foreground foreground))
2885; (tooltips-set-colors-real tooltips background foreground)))
2886
2887; (define-foreign tooltips-force-window () nil
2888; (tooltips tooltips))
2889
2890
2891
2892
2893; ;;; Rc
2894
2895; (define-foreign rc-add-default-file (filename) nil
2896; ((namestring (truename filename)) string))
2897
2898; (define-foreign rc-parse (filename) nil
2899; ((namestring (truename filename)) string))
2900
2901; (define-foreign rc-parse-string () nil
2902; (rc-string string))
2903
2904; (define-foreign rc-reparse-all () nil)
2905
2906; ;(define-foreign rc-get-style () style
2907; ; (widget widget))
2908
2909
2910
2911;;; Accelerator Groups
2912
2913(define-foreign accel-group-new () accel-group)
2914
2915(define-foreign accel-group-get-default () accel-group)
2916
2917(define-foreign accel-group-ref () accel-group
2918 (accel-group accel-group))
2919
2920(define-foreign accel-group-unref () nil
2921 (accel-group accel-group))
2922
2923(define-foreign accel-group-activate (accel-group key modifiers) boolean
2924 (accel-group accel-group)
2925 ((gdk:keyval-from-name key) unsigned-int)
2926 (modifiers gdk:modifier-type))
2927
2928(define-foreign accel-groups-activate (object key modifiers) boolean
2929 (object object)
2930 ((gdk:keyval-from-name key) unsigned-int)
2931 (modifiers gdk:modifier-type))
2932
2933(define-foreign accel-group-attach () nil
2934 (accel-group accel-group)
2935 (object object))
2936
2937(define-foreign accel-group-detach () nil
2938 (accel-group accel-group)
2939 (object object))
2940
2941(define-foreign accel-group-lock () nil
2942 (accel-group accel-group))
2943
2944(define-foreign accel-group-unlock () nil
2945 (accel-group accel-group))
2946
2947
2948;;; Accelerator Groups Entries
2949
2950(define-foreign accel-group-get-entry (accel-group key modifiers) accel-entry
2951 (accel-group accel-group)
2952 ((gdk:keyval-from-name key) unsigned-int)
2953 (modifiers gdk:modifier-type))
2954
2955(define-foreign accel-group-lock-entry (accel-group key modifiers) nil
2956 (accel-group accel-group)
2957 ((gdk:keyval-from-name key) unsigned-int)
2958 (modifiers gdk:modifier-type))
2959
2960(define-foreign accel-group-unlock-entry (accel-group key modifiers) nil
2961 (accel-group accel-group)
2962 ((gdk:keyval-from-name key) unsigned-int)
2963 (modifiers gdk:modifier-type))
2964
2965(define-foreign accel-group-add
2966 (accel-group key modifiers flags object signal) nil
2967 (accel-group accel-group)
2968 ((gdk:keyval-from-name key) unsigned-int)
2969 (modifiers gdk:modifier-type)
2970 (flags accel-flags)
2971 (object object)
2972 ((name-to-string signal) string))
2973
2974(define-foreign accel-group-add (accel-group key modifiers object) nil
2975 (accel-group accel-group)
2976 ((gdk:keyval-from-name key) unsigned-int)
2977 (modifiers gdk:modifier-type)
2978 (object object))
2979
2980
2981;;; Accelerator Signals
2982
2983(define-foreign accel-group-handle-add
2984 (object signal-id accel-group key modifiers flags) nil
2985 (object object)
2986 (signal-id unsigned-int)
2987 (accel-group accel-group)
2988 ((gdk:keyval-from-name key) unsigned-int)
2989 (modifiers gdk:modifier-type)
2990 (flags accel-flags))
2991
2992(define-foreign accel-group-handle-remove
2993 (object accel-group key modifiers) nil
2994 (object object)
2995 (accel-group accel-group)
2996 ((gdk:keyval-from-name key) unsigned-int)
2997 (modifiers gdk:modifier-type))
2998
2999
3000
3001;;; Style
3002
3003; (define-foreign style-new () style)
3004
3005; (define-foreign style-copy () style
3006; (style style))
3007
3008; (define-foreign style-ref () style
3009; (style style))
3010
3011; (define-foreign style-unref () nil
3012; (style style))
3013
3014; (define-foreign style-get-color () gdk:color
3015; (style style)
3016; (color-type color-type)
3017; (state-type state-type))
3018
3019; (define-foreign
3020; ("gtk_style_set_color" style-set-color-from-color) () gdk:color
3021; (style style)
3022; (color-type color-type)
3023; (state-type state-type)
3024; (color gdk:color))
3025
3026; (defun style-set-color (style color-type state-type color)
3027; (gdk:with-colors ((color color))
3028; (style-set-color-from-color style color-type state-type color)))
3029
3030; (define-foreign ("gtk_style_get_font" style-font) () gdk:font
3031; (style style))
3032
3033; (define-foreign style-set-font () gdk:font
3034; (style style)
3035; (font gdk:font))
3036
3037; (defun (setf style-font) (font style)
3038; (let ((font (gdk:ensure-font font)))
3039; (gdk:font-unref (style-font style))
3040; (style-set-font style font)))
3041
3042; (defun style-fg (style state)
3043; (style-get-color style :foreground state))
3044
3045; (defun (setf style-fg) (color style state)
3046; (style-set-color style :foreground state color))
3047
3048; (defun style-bg (style state)
3049; (style-get-color style :background state))
3050
3051; (defun (setf style-bg) (color style state)
3052; (style-set-color style :background state color))
3053
3054; (defun style-text (style state)
3055; (style-get-color style :text state))
3056
3057; (defun (setf style-text) (color style state)
3058; (style-set-color style :text state color))
3059
3060; (defun style-base (style state)
3061; (style-get-color style :base state))
3062
3063; (defun (setf style-base) (color style state)
3064; (style-set-color style :base state color))
3065
3066; (defun style-white (style)
3067; (style-get-color style :white :normal))
3068
3069; (defun (setf style-white) (color style)
3070; (style-set-color style :white :normal color))
3071
3072; (defun style-black (style)
3073; (style-get-color style :black :normal))
3074
3075; (defun (setf style-black) (color style)
3076; (style-set-color style :black :normal color))
3077
3078; (define-foreign style-get-gc
3079; (style color-type &optional (state-type :normal)) gdk:gc
3080; (style style)
3081; (color-type color-type)
3082; (state-type state-type))
3083
3084
3085
3086
3087
3088
3089
3090