chiark / gitweb /
Bugfix in (setf object-arg)
[clg] / gtk / gtktypes.lisp
1 ;; Common Lisp bindings for GTK+ v2.0.x
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: gtktypes.lisp,v 1.2 2000-08-15 19:55:08 espen Exp $
19
20
21
22 (in-package "GTK")
23
24
25 ; (deftype color-type
26 ;   (enum
27 ;    :foreground
28 ;    :background
29 ;    :light
30 ;    :dark
31 ;    :mid
32 ;    :text
33 ;    :base
34 ;    :white
35 ;    :black))
36
37
38 (defclass  style (gobject)
39   ()
40   (:metaclass gobject-class)
41   (:alien-name "GtkStyle"))
42
43
44 (defclass accel-group (alien-object)
45   ()
46   (:metaclass alien-class)
47   (:alien-name "GtkAccelGroup"))
48
49 (deftype accel-entry () 'pointer) ; internal?
50
51
52 ;; These types are actully a single linked lists of widgets. As long as
53 ;; we don't have to access the individual widgets defining them this way
54 ;; is adequate and most efficient.
55 (deftype radio-button-group () 'pointer) 
56 (deftype radio-menu-item-group () 'pointer)
57
58
59 (defclass data (object)
60   ()
61   (:metaclass object-class)
62   (:alien-name "GtkData"))
63
64
65 (defclass adjustment (data)
66   ((lower
67     :allocation :alien
68     :accessor adjustment-lower
69     :initarg :lower
70     :type single-float)
71    (upper
72     :allocation :alien
73     :accessor adjustment-upper
74     :initarg :upper
75     :type single-float)
76    (value
77     :allocation :alien
78     :accessor adjustment-value
79     :initarg :value
80     :type single-float)
81    (step-increment
82     :allocation :alien
83     :accessor adjustment-step-increment
84     :initarg :step-increment
85     :type single-float)
86    (page-increment
87     :allocation :alien
88     :accessor adjustment-page-increment
89     :initarg :page-increment
90     :type single-float)
91    (page-size
92     :allocation :alien
93     :accessor adjustment-page-size
94     :initarg :page-size
95     :type single-float))
96   (:metaclass object-class)
97   (:alien-name "GtkAdjustment"))
98   
99
100 (defclass tooltips (data)
101   ((delay
102     :allocation :virtual
103     :location ("gtk_tooltips_get_delay" "gtk_tooltips_set_delay")
104     :accessor tooltips-delay
105     :type unsigned-int)
106    (enabled
107     :allocation :virtual
108     :location ("gtk_tooltips_get_enabled" (setf tooltips-enabled-p))
109     :reader tooltips-enabled-p
110     :initarg :enabled
111     :type boolean))
112   (:metaclass object-class)
113   (:alien-name "GtkTooltips"))
114
115
116 ;; Forward declaration, the real definition is in gtkwidget.lisp
117 (defclass widget (object)
118   ()
119   (:metaclass object-class)
120   (:alien-name "GtkWidget"))
121
122
123 (defclass misc (widget)
124   ((xalign
125     :allocation :arg
126     :accessor misc-xalign
127     :initarg :xalign
128     :type single-float)
129    (yalign
130     :allocation :arg
131     :accessor misc-yalign
132     :initarg :yalign
133     :type single-float)
134    (xpad
135     :allocation :arg
136     :accessor misc-xpad
137     :initarg :xpad
138     :type int)
139    (ypad
140     :allocation :arg
141     :accessor misc-ypad
142     :initarg :ypad
143     :type int))
144   (:metaclass widget-class)
145   (:alien-name "GtkMisc"))
146
147
148 (defclass label (misc)
149   ((label
150     :allocation :arg
151     :accessor label-label
152     :initarg :label
153     :type string)
154    (pattern
155     :allocation :arg
156     :accessor label-pattern
157     :initarg :pattern
158     :type string)
159    (justify
160     :allocation :arg
161     :accessor label-justify
162     :initarg :justify
163     :type justification)
164    (wrap
165     :allocation :arg
166     :accessor label-line-wrap-p
167     :initarg :wrap
168     :type boolean))
169   (:metaclass widget-class)
170   (:alien-name "GtkLabel"))
171
172
173 (defclass accel-label (label)
174   ((widget
175     :allocation :arg
176     :location "GtkAccelLabel::accel_widget"
177     :accessor accel-widget
178     :initarg :widget
179     :type widget)
180    (width
181     :allocation :virtual
182     :location "gtk_accel_label_get_accel_width"
183     :reader width
184     :type unsigned-int))
185   (:metaclass widget-class)
186   (:alien-name "GtkAccelLabel"))
187
188
189 (defclass tips-query (label)
190   ((emit-always
191     :allocation :arg
192     :accessor tips-query-emit-always-p
193     :initarg :emit-always
194     :type boolean)
195    (caller
196     :allocation :arg
197     :accessor tips-query-caller
198     :initarg :caller
199     :type widget)
200    (label-inactive
201     :allocation :arg
202     :accessor tips-query-label-inactive
203     :initarg :label-inactive
204     :type string)
205    (label-no-tip
206     :allocation :arg
207     :accessor tips-query-label-no-tip
208     :initarg :label-no-tip
209     :type string))
210   (:metaclass widget-class)
211   (:alien-name "GtkTipsQuery"))
212
213
214 (defclass arrow (misc)
215   ((arrow-type
216     :allocation :arg
217     :accessor arrow-arrow-type
218     :initarg :arrow-type
219     :type arrow-type)
220    (shadow-type
221     :allocation :arg
222     :accessor arrow-shadow-type
223     :initarg :shadow-type
224     :type shadow-type))
225   (:metaclass widget-class)
226   (:alien-name "GtkArrow"))
227
228
229 (defclass image (misc)
230   ()
231   (:metaclass widget-class)
232   (:alien-name "GtkImage"))
233
234
235 (defclass pixmap (misc)
236   ()
237   (:metaclass widget-class)
238   (:alien-name "GtkPixmap"))
239
240
241 ;; Forward declaration, the real definition is in gtkcontainer.lisp
242 (defclass container (widget)
243   ()
244   (:metaclass widget-class)
245   (:alien-name "GtkContainer"))
246
247 (defclass container-child ()
248   ((parent
249     :initarg :parent
250     :type container)
251    (child
252     :initarg :child
253     :type widget)))
254
255
256 (defclass bin (container)
257   ((child
258     :allocation :virtual
259     :location bin-child
260     :initarg :child
261     :type widget))
262   (:metaclass container-class)
263   (:alien-name "GtkBin"))
264
265 (defclass bin-child (container-child))
266
267
268 (defclass alignment (bin)
269   ((xalign
270     :allocation :arg
271     :accessor alignment-xalign
272     :initarg :xalign
273     :type single-float)
274    (yalign
275     :allocation :arg
276     :accessor alignment-yalign
277     :initarg :yalign
278     :type single-float)
279    (xscale
280     :allocation :arg
281     :accessor alignment-xscale
282     :initarg :xscale
283     :type single-float)
284    (yscale
285     :allocation :arg
286     :accessor alignment-yscale
287     :initarg :yscale
288     :type single-float))
289   (:metaclass container-class)
290   (:alien-name "GtkAlignment"))
291
292 (defclass alignment-child (bin-child))
293
294
295 (defclass frame (bin)
296   ((label
297     :allocation :arg
298     :accessor frame-label
299     :initarg :label
300     :type string)
301    (label-xalign
302     :allocation :arg
303     :accessor frame-label-xalign
304     :initarg :label-xalign
305     :type single-float)
306    (label-yalign
307     :allocation :arg
308     :accessor frame-label-yalign
309     :initarg :label-yalign
310     :type single-float)
311    (shadow-type
312     :allocation :arg
313     :location "GtkFrame::shadow"
314     :accessor frame-shadow-type
315     :initarg :shadow-type
316     :type shadow-type))
317   (:metaclass container-class)
318   (:alien-name "GtkFrame"))
319
320 (defclass frame-child (bin-child))
321   
322
323 ; (defclass aspect-frame (frame)
324 ;   ((xalign
325 ;     :allocation :arg
326 ;     :accessor aspect-frame-xalign
327 ;     :initarg :xalign
328 ;     :type single-float)
329 ;    (yalign
330 ;     :allocation :arg
331 ;     :accessor aspect-frame-yalign
332 ;     :initarg :yalign
333 ;     :type single-float)
334 ;    (ratio
335 ;     :allocation :arg
336 ;     :accessor aspect-frame-ratio
337 ;     :initarg :ratio
338 ;     :type single-float)
339 ;    (obey-child
340 ;     :allocation :arg
341 ;     :accessor aspect-frame-obey-child-p
342 ;     :initarg :obey-child
343 ;     :type boolean))
344 ;   (:metaclass container-class)
345 ;   (:alien-name "GtkAspectFrame"))
346
347 ; (defclass aspect-frame-child (aspect-child))
348
349
350 (defclass button (bin)
351   ((label
352     :allocation :arg
353     :accessor button-label
354     :initarg :label
355     :type string)
356    (relief
357     :allocation :arg
358     :accessor button-relief
359     :initarg :relief
360     :type relief-style))
361   (:metaclass container-class)
362   (:alien-name "GtkButton"))
363
364 (defclass button-child (bin-child))
365   
366
367 (defclass toggle-button (button)
368   ((active
369     :allocation :arg
370     :accessor toggle-button-active-p
371     :initarg :active
372     :type boolean)
373    (draw-indicator
374     :allocation :arg
375     :accessor toggle-button-draw-indicator-p
376     :initarg :draw-indicator
377     :type boolean))
378   (:metaclass container-class)
379   (:alien-name "GtkToggleButton"))
380
381 (defclass toggle-button-child (button-child))
382
383
384 (defclass check-button (toggle-button)
385   ()
386   (:metaclass container-class)
387   (:alien-name "GtkCheckButton"))
388
389 (defclass check-button-child (toggle-button-child))
390
391
392 (defclass radio-button (check-button)
393   ((group
394     :allocation :arg
395     :initarg :group
396 ;    :access :write-only
397     :type radio-button-group))
398   (:metaclass container-class)
399   (:alien-name "GtkRadioButton"))
400
401 (defclass radio-button-child (check-button-child))
402   
403
404 (defclass option-menu (button)
405   ((menu
406     :allocation :virtual
407     :location ("gtk_option_menu_get_menu" (setf option-menu-menu))
408     :reader option-menu-menu
409     :initarg :menu
410     :type widget)
411    (history
412     :allocation :virtual
413     :location (nil "gtk_option_menu_set_history")
414     :writer (setf option-menu-history)
415     :initarg :history
416     :type unsigned-int))
417   (:metaclass container-class)
418   (:alien-name "GtkOptionMenu"))
419
420 (defclass option-menu-child (button-child))
421
422
423 (defclass item (bin)
424   ()
425   (:metaclass container-class)
426   (:alien-name "GtkOptionMenu"))
427
428 (defclass item-child (bin-child))
429
430
431 (defclass menu-item (item)
432   ((label
433     :allocation :virtual
434     :location menu-item-label
435     :initarg :label
436     :type string)
437    (submenu
438     :allocation :virtual
439     :location ("gtk_menu_item_get_submenu" (setf menu-item-submenu))
440     :reader menu-item-submenu
441     :initarg :submenu
442     :type menu-item)
443    (placement
444     :allocation :virtual
445     :location ("gtk_menu_item_get_placement" "gtk_menu_item_set_placement")
446     :accessor menu-item-placement
447     :initarg :placement
448     :type submenu-placement)
449    (toggle-indicator
450     :allocation :virtual
451     :location ("gtk_menu_item_get_show_toggle"
452                (setf menu-item-toggle-indicator-p))
453     :reader menu-item-toggle-indicator-p
454     :initarg :toggle-indicator
455     :type boolean)
456    (submenu-indicator
457     :allocation :virtual
458     :location ("gtk_menu_item_get_show_submenu"
459                (setf menu-item-submenu-indicator-p))
460     :reader menu-item-submenu-indicator-p
461     :initarg :submenu-indicator
462     :type boolean))
463   (:metaclass container-class)
464   (:alien-name "GtkMenuItem"))
465   
466 (defclass menu-item-child (item-child))
467
468   
469 (defclass check-menu-item (menu-item)
470   ((active
471     :allocation :virtual
472     :location ("gtk_check_menu_item_get_active"
473                "gtk_check_menu_item_set_active")
474     :accessor check-menu-item-active-p
475     :initarg :active
476     :type boolean)
477    (toggle-indicator
478     :allocation :virtual
479     :location ("gtk_check_menu_item_get_show_toggle"
480                "gtk_check_menu_item_set_show_toggle")
481     :accessor check-menu-item-toggle-indicator-p
482     :initarg :toggle-indicator
483     :type boolean))
484   (:metaclass container-class)
485   (:alien-name "GtkCheckMenuItem"))
486
487 (defclass check-menu-item-child (menu-item-child))
488
489
490 (defclass radio-menu-item (check-menu-item)
491   ((group
492     :allocation :virtual
493     :location "gtk_radio_menu_item_group"
494     :reader radio-menu-item-group
495     :type radio-menu-item-group))
496   (:metaclass container-class)
497   (:alien-name "GtkRadioMenuItem"))
498
499 (defclass radio-menu-item-child (check-menu-item-child))
500
501
502 (defclass tearoff-menu-item (menu-item)
503   ()
504   (:metaclass container-class)
505   (:alien-name "GtkTearoffMenuItem"))
506
507 (defclass tearoff-menu-item-child (menu-item-child))
508
509
510 (defclass list-item (item)
511   ()
512   (:metaclass container-class)
513   (:alien-name "GtkListItem"))
514
515 (defclass list-item-child (item-child))
516   
517
518 ;; deprecated
519 (defclass tree-item (item)
520   ()
521 ;   :slots
522 ;   ;; slots not accessible through the arg mechanism
523 ;   ((subtree                :write-method :lisp :type tree-item)))
524   (:metaclass container-class)
525   (:alien-name "GtkTreeItem"))
526
527 (defclass tree-item-child (item-child))
528
529
530 (defclass window (bin)
531   ((type
532     :allocation :arg
533     :accessor window-type
534     :initarg :type
535     :type window-type)
536    (title
537     :allocation :arg
538     :accessor window-title
539     :initarg :title
540     :type string)
541    (auto-shrink
542     :allocation :arg
543     :accessor window-auto-shrink-p
544     :initarg :auto-shrink
545     :type boolean)
546    (allow-shrink
547     :allocation :arg
548     :accessor window-allow-shrink-p
549     :initarg :allow-shrink
550     :type boolean)
551    (allow-grow
552     :allocation :arg
553     :accessor window-allow-grow-p
554     :initarg :allow-grow
555     :type boolean)
556    (modal
557     :allocation :arg
558     :accessor window-modal-p
559     :initarg :modal
560     :type boolean)
561    (position
562     :allocation :arg
563     :location "GtkWindow::window_position"
564     :accessor window-position
565     :initarg :position
566     :type window-position)
567    (default-width
568     :allocation :arg
569     :accessor window-default-width
570     :initarg :default-width
571     :type int)
572    (default-height
573     :allocation :arg
574     :accessor window-default-height
575     :initarg :default-height
576     :type int))
577   (:metaclass container-class)
578   (:alien-name "GtkWindow"))
579
580 (defclass window-child (bin-child))
581
582
583 ; (defclass color-selection-dialog window
584 ;   :slots
585 ;   ;; slots not accessible through the arg mechanism
586 ;   ((colorsel               :read-only t :type widget)
587 ;    (main-vbox              :read-only t :type widget)
588 ;    (ok-button              :read-only t :type widget)
589 ;    (reset-button           :read-only t :type widget)
590 ;    (cancel-button          :read-only t :type widget)
591 ;    (help-button            :read-only t :type widget)))
592
593 ; (defclass dialog window
594 ;   :slots
595 ;   ;; slots not accessible through the arg mechanism
596 ;   ((action-area            :read-only t :type widget)
597 ;    (vbox                   :read-only t :type widget)))
598
599 ; (defclass input-dialog dialog)
600
601 ; (defclass file-selection window
602 ;   :slots
603 ;   ;; slots not accessible through the arg mechanism
604 ;   ((filename               :type string)
605 ;    (action-area            :read-only t :type widget)
606 ;    (ok-button              :read-only t :type widget)
607 ;    (cancel-button          :read-only t :type widget)))
608
609 ; (defclass plug window)
610
611
612 (defclass event-box (bin)
613   ()
614   (:metaclass container-class)
615   (:alien-name "GtkEventBox"))
616
617 (defclass event-box-child (bin-child)
618   ()
619   (:metaclass child-class))
620
621
622 (defclass handle-box (bin)
623   ((shadow-type
624     :allocation :arg
625     :location "GtkHandleBox::shadow"
626     :accessor handle-box-shadow-type
627     :initarg :shadow-type
628     :type shadow-type)   
629    (handle-position
630     :allocation :arg
631     :accessor handle-box-handle-position
632     :initarg :handle-position
633     :type position-type)
634    (snap-edge
635     :allocation :arg
636     :accessor handle-box-snap-edge
637     :initarg :snap-edge
638     :type position-type))
639   (:metaclass container-class)
640   (:alien-name "GtkHandleBox"))
641
642 (defclass handle-box-child (bin-child)
643   ()
644   (:metaclass child-class))
645
646
647 (defclass scrolled-window (bin)
648   ((hadjustment
649     :allocation :arg
650     :accessor scrolled-window-hadjustment
651     :initarg :hadjustment
652     :type adjustment)   
653    (vadjustment
654     :allocation :arg
655     :accessor scrolled-window-vadjustment
656     :initarg :vadjustment
657     :type adjustment)
658    (hscrollbar-policy
659     :allocation :arg
660     :accessor scrolled-window-hscrollbar-policy
661     :initarg :hscrollbar-policy
662     :type policy-type)
663    (vscrollbar-policy
664     :allocation :arg
665     :accessor scrolled-window-vscrollbar-policy
666     :initarg :vscrollbar-policy
667     :type policy-type)
668    (placement
669     :allocation :arg
670     :location "GtkScrolledWindow::window_placement"
671     :accessor scrolled-window-placement
672     :initarg :placement
673     :type corner-type)
674    (shadow-type
675     :allocation :arg
676     :location "GtkScrolledWindow::shadow"
677     :accessor scrolled-window-shadow-type
678     :initarg :shadow-type
679     :type shadow-type)
680    (hscrollbar
681     :allocation :virtual
682     :location "gtk_scrolled_window_get_hscrollbar"
683     :accessor scrolled-window-hscrollbar
684     :type widget)
685    (vscrollbar
686     :allocation :virtual
687     :location "gtk_scrolled_window_get_vscrollbar"
688     :accessor scrolled-window-vscrollbar
689     :type widget))
690   (:metaclass container-class)
691   (:alien-name "GtkScrolledWindow"))
692
693 (defclass scrolled-window-child (bin-child)
694   ()
695   (:metaclass child-class))
696
697
698 (defclass viewport (bin)
699   ((hadjustment
700     :allocation :arg
701     :accessor viewport-hadjustment
702     :initarg :hadjustment
703     :type adjustment)   
704    (vadjustment
705     :allocation :arg
706     :accessor viewport-vadjustment
707     :initarg :vadjustment
708     :type adjustment)
709    (shadow-type
710     :allocation :arg
711     :accessor viewport-shadow-type
712     :initarg :shadow-type
713     :type shadow-type))
714   (:metaclass container-class)
715   (:alien-name "GtkViewport"))
716
717 (defclass viewport-child (bin-child)
718   ()
719   (:metaclass child-class))
720   
721
722 (defclass box (container)
723   ((spacing
724     :allocation :arg
725     :accessor box-spacing
726     :initarg :spacing
727     :type int)
728    (homogeneous
729     :allocation :arg
730     :accessor box-homogeneous-p
731     :initarg :homogeneous
732     :type boolean))
733   (:metaclass container-class)
734   (:alien-name "GtkBox"))
735
736 (defclass box-child (container-child)
737   ((expand
738     :allocation :arg
739     :accessor box-child-expand-p
740     :initarg :expand
741     :type boolean)
742    (fill
743     :allocation :arg
744     :accessor box-child-fill-p
745     :initarg :fill
746     :type boolean)
747    (padding
748     :allocation :arg
749     :accessor box-child-padding
750     :initarg :padding
751     :type unsigned-long)
752    (pack-type
753     :allocation :arg
754     :accessor box-child-pack-type
755     :initarg :pack-type
756     :type pack-type)
757    (position
758     :allocation :arg
759     :accessor box-child-position
760     :initarg :position
761     :type long))
762   (:metaclass child-class))
763    
764
765 (defclass button-box (box)
766   ((spacing
767     :allocation :virtual
768     :location ("gtk_button_box_get_spacing" "gtk_button_box_set_spacing")
769     :accessor button-box-spacing
770     :type int)
771    (layout
772     :allocation :virtual
773     :location ("gtk_button_box_get_layout" "gtk_button_box_set_layout")
774     :accessor button-box-layout
775     :type button-box-style))
776   (:metaclass container-class)
777   (:alien-name "GtkButtonBox"))
778
779 (defclass button-box-child (box-child)
780   ()
781   (:metaclass child-class))
782
783
784 (defclass hbutton-box (button-box)
785   ()
786   (:metaclass container-class)
787   (:alien-name "GtkHButtonBox"))
788
789 (defclass hbutton-box-child (button-box-child)
790   ()
791   (:metaclass child-class))
792
793
794 (defclass vbutton-box (button-box)
795   ()
796   (:metaclass container-class)
797   (:alien-name "GtkVButtonBox"))
798
799 (defclass vbutton-box-child (button-box-child)
800   ()
801   (:metaclass child-class))
802
803
804 (defclass vbox (box)
805   ()
806   (:metaclass container-class)
807   (:alien-name "GtkVBox"))
808
809 (defclass vbox-child (box-child)
810   ()
811   (:metaclass child-class))
812
813
814 ; (defclass color-selection vbox
815 ;   :slots
816 ;   ((policy                 :c-writer "gtk_color_selection_set_update_policy"
817 ;                          :read-method :arg :type update-type)
818 ;    (use-opacity            :c-writer "gtk_color_selection_set_opacity"
819 ;                          :read-method :arg :type boolean)
820 ;    ;; slots not accessible through the arg mechanism
821 ;    (color                  :access-method :lisp)))
822
823 ; (defclass gamma-curve vbox)
824
825
826 (defclass hbox (box)
827   ()
828   (:metaclass container-class)
829   (:alien-name "GtkHBox"))
830
831 (defclass hbox-child (box-child)
832   ()
833   (:metaclass child-class))
834
835
836 (defclass statusbar (hbox)
837   ()
838   (:metaclass container-class)
839   (:alien-name "GtkStatusbar"))
840
841 (defclass statusbar-child (hbox-child)
842   ()
843   (:metaclass child-class))
844
845 ;; CList and CTree is deprecated
846 ; (defclass clist container
847 ;   :c-name "GtkCList"
848 ;   :c-prefix "gtk_clist_"
849 ;   :slots
850 ;   ((n-columns              :read-only t :initarg t :access-method :arg
851 ;                          :type unsigned-int)
852 ;    (shadow-type            :read-method :arg :type shadow-type)
853 ;    (selection-mode         :read-method :arg :type selection-mode)
854 ;    (row-height             :read-method :arg :type unsigned-int)
855 ;    (reorderable            :read-method :arg :type boolean)
856 ;    (titles-visible         :write-method :lisp :type boolean)
857 ;    (titles-active          :access-method :arg :type boolean)
858 ;    (use-drag-icons         :read-method :arg :type boolean)
859 ;    (sort-type              :read-method :arg :type sort-type)
860 ;    ;; slots not accessible through the arg mechanism
861 ;    (hadjustment            :type adjustment)
862 ;    (vadjustment            :type adjustment)
863 ;    (sort-column            :type int)
864 ;    (focus-row              :reader %clist-focus-row :read-only t :type int)
865 ;    (n-rows                 :read-only t :type int)))
866
867 ; (defclass ctree clist
868 ;   :c-name "GtkCTree"
869 ;   :c-prefix "gtk_ctree_"
870 ;   :slots
871 ;   ((n-columns              :read-only t :initarg t :access-method :arg
872 ;                          :type unsigned-int)
873 ;    (tree-column            :read-only t :initarg t :access-method :arg
874 ;                          :type unsigned-int)
875 ;    (indent                 :read-method :arg :type unsigned-int)
876 ;    (spacing                :read-method :arg :type unsigned-int)
877 ;    (show-stub              :read-method :arg :type boolean)
878 ;    (line-style             :read-method :arg :type ctree-line-style)
879 ;    (expander-style         :read-method :arg :type ctree-expander-style)))
880
881 (defclass fixed (container)
882   ()
883   (:metaclass container-class)
884   (:alien-name "GtkFixed"))
885
886 (defclass fixed-child (container-child)
887   ()
888   (:metaclass child-class))
889
890
891 (defclass notebook (container)
892   ((tab-pos
893     :allocation :arg
894     :accessor notebook-tab-pos
895     :initarg :tab-pos
896     :type position-type)
897    (show-tabs
898     :allocation :arg
899     :accessor notebook-show-tabs-p
900     :initarg :show-tabs
901     :type boolean)
902    (show-border
903     :allocation :arg
904     :accessor notebook-show-border-p
905     :initarg :show-border
906     :type boolean)
907    (scrollable
908     :allocation :arg
909     :accessor notebook-scrollable-p
910     :initarg :scrollable
911     :type boolean)
912    (tab-border
913     :allocation :arg
914     :accessor notebook-tab-border
915     :initarg :tab-border
916     :type unsigned-int)
917    (tab-hborder
918     :allocation :arg
919     :accessor notebook-tab-hborder
920     :initarg :tab-hborder
921     :type unsigned-int)
922    (tab-vborder
923     :allocation :arg
924     :accessor notebook-tab-vborder
925     :initarg :tab-vborder
926     :type unsigned-int)
927    (page
928     :allocation :arg
929     :accessor notebook-page
930     :initarg :page
931     :type int)
932    (enable-popup
933     :allocation :arg
934     :accessor notebook-enable-popup-p
935     :initarg :enable-popup
936     :type boolean)
937    (homogeneous
938     :allocation :arg
939     :accessor notebook-homogeneous-p
940     :initarg :homogeneous
941     :type boolean))
942   (:metaclass container-class)
943   (:alien-name "GtkNotebook"))
944
945 (defclass notebook-child (container-child)
946   ((tab-label
947     :allocation :arg
948     :accessor notebook-child-tab-label
949     :initarg :tab-label
950     :type string)
951    (menu-label
952     :allocation :arg
953     :accessor notebook-child-menu-label
954     :initarg :menu-label
955     :type string)
956    (position
957     :allocation :arg
958     :accessor notebook-child-position
959     :initarg :position
960     :type int)
961    (tab-fill
962     :allocation :arg
963     :accessor notebook-child-tab-fill-p
964     :initarg :tab-fill
965     :type boolean)
966    (tab-pack
967     :allocation :arg
968     :accessor notebook-child-tab-pack-p
969     :initarg :tab-pack
970     :type boolean))
971   (:metaclass child-class))
972
973
974 (defclass font-selection (notebook)
975   ()
976   (:metaclass container-class)
977   (:alien-name "GtkFontSelection"))
978
979 (defclass font-selection-child (notebook-child)
980   ()
981   (:metaclass child-class))
982
983
984 (defclass paned (container)
985   ((handle-size
986     :allocation :arg
987     :accessor paned-handle-size
988     :initarg handle-size
989     :type unsigned-int)
990    (position
991     :allocation :virtual
992     :location ("gtk_paned_get_position" "gtk_paned_set_position")
993     :accessor paned-position
994     :initarg :position
995     :type int))
996   (:metaclass container-class)
997   (:alien-name "GtkPaned"))
998
999 (defclass paned-child (container-child)
1000   ()
1001   (:metaclass child-class))
1002
1003
1004 (defclass hpaned (paned)
1005   ()
1006   (:metaclass container-class)
1007   (:alien-name "GtkHPaned"))
1008
1009 (defclass hpaned-child (paned-child)
1010   ()
1011   (:metaclass child-class))
1012
1013
1014 (defclass vpaned (paned)
1015   ()
1016   (:metaclass container-class)
1017   (:alien-name "GtkVPaned"))
1018
1019 (defclass vpaned-child (paned-child)
1020   ()
1021   (:metaclass child-class))
1022
1023
1024 (defclass layout (container)
1025   ((hadjustment
1026     :allocation :virtual
1027     :location ("gtk_layout_get_hadjustment" "gtk_layout_set_hadjustment")
1028     :accessor layout-hadjustment
1029     :initarg :hadjustment
1030     :type adjustment)
1031    (vadjustment
1032     :allocation :virtual
1033     :location ("gtk_layout_get_vadjustment" "gtk_layout_set_vadjustment")
1034     :accessor layout-vadjustment
1035     :initarg :vadjustment
1036     :type adjustment))
1037   (:metaclass container-class)
1038   (:alien-name "GtkLayout"))
1039
1040 (defclass layout-child (container-child)
1041   ()
1042   (:metaclass child-class))
1043   
1044
1045 ; (defclass list-widget container
1046 ;   :c-name "GtkList"
1047 ;   :slots
1048 ;   ((selection-mode         :read-method :arg :accessor list-selection-mode
1049 ;                          :c-writer "gtk_list_set_selection_mode"
1050 ;                          :type selection-mode)))
1051
1052
1053 (defclass menu-shell (container)
1054   ()
1055   (:metaclass container-class)
1056   (:alien-name "GtkMenuShell"))
1057
1058 (defclass menu-shell-child (container-child)
1059   ()
1060   (:metaclass child-class))
1061
1062
1063 (defclass menu-bar (menu-shell)
1064   ((shadow-type
1065     :allocation :arg
1066     :location "GtkMenuBar::shadow"
1067     :accessor menu-bar-shadow-type
1068     :initarg :shadow-type
1069     :type shadow-type))
1070   (:metaclass container-class)
1071   (:alien-name "GtkMenuBar"))
1072
1073 (defclass menu-bar-child (menu-shell-child)
1074   ()
1075   (:metaclass child-class))
1076   
1077
1078 (defclass menu (menu-shell)
1079   ((accel-group
1080     :allocation :virtual
1081     :location ("gtk_menu_get_accel_group" "gtk_menu_set_accel_group")
1082     :accessor menu-accel-group
1083     :initarg :accel-group
1084     :type accel-group)
1085    (tornoff
1086     :allocation :virtual
1087     :location ("gtk_menu_get_tearoff_state" "gtk_menu_set_tearoff_state")
1088     :accessor menu-tornoff-p
1089     :initarg :tearoff
1090     :type boolean)
1091    (title
1092     :allocation :virtual
1093     :location ("gtk_menu_get_title" "gtk_menu_set_title")
1094     :accessor menu-title
1095     :initarg :title
1096     :type string))
1097   (:metaclass container-class)
1098   (:alien-name "GtkMenu"))
1099
1100 (defclass menu-child (menu-shell-child)
1101   ()
1102   (:metaclass child-class))
1103   
1104
1105 (defclass packer (container)
1106   ((spacing
1107     :allocation :arg
1108     :accessor packer-spacing
1109     :initarg :spacing
1110     :type unsigned-int)
1111    (default-border-width
1112     :allocation :arg
1113     :accessor packer-default-border-width
1114     :initarg :default-border-width
1115     :type unsigned-int)
1116    (default-pad-x
1117     :allocation :arg
1118     :accessor packer-default-pad-x
1119     :initarg :default-pad-x
1120     :type unsigned-int)
1121    (default-pad-y
1122     :allocation :arg
1123     :accessor packer-default-pad-y
1124     :initarg :default-pad-y
1125     :type unsigned-int)
1126    (default-ipad-x
1127     :allocation :arg
1128     :accessor packer-default-ipad-y
1129     :initarg :default-ipad-y
1130     :type unsigned-int)
1131    (default-ipad-y
1132     :allocation :arg
1133     :accessor packer-default-ipad-y
1134     :initarg :default-ipad-y
1135     :type unsigned-int))
1136   (:metaclass container-class)
1137   (:alien-name "GtkPacker"))
1138
1139 (defclass packer-child (container-child)
1140   ((side
1141     :allocation :arg
1142     :accessor packer-child-side
1143     :initarg :side
1144     :type side-type)
1145    (anchor
1146     :allocation :arg
1147     :accessor packer-child-anchor
1148     :initarg :anchor
1149     :type anchor-type)
1150    (expand
1151     :allocation :arg
1152     :accessor packer-child-expand-p
1153     :initarg :expand
1154     :type boolean)
1155    (fill-x
1156     :allocation :arg
1157     :accessor packer-child-fill-x-p
1158     :initarg :fill-x
1159     :type boolean)
1160    (fill-y
1161     :allocation :arg
1162     :accessor packer-child-fill-y-p
1163     :initarg :fill-y    
1164     :type boolean)
1165    (use-default
1166     :allocation :arg
1167     :accessor packer-child-use-default
1168     :initarg :default
1169     :type boolean)
1170    (border-width
1171     :allocation :arg
1172     :accessor packer-child-border-width
1173     :initarg :default    
1174     :type unsigned-int)
1175    (pad-x
1176     :allocation :arg
1177     :accessor packer-child-pad-x
1178     :initarg :pad-x
1179     :type unsigned-int)
1180    (pad-y
1181     :allocation :arg
1182     :accessor packer-child-pad-y
1183     :initarg :pad-y
1184     :type unsigned-int)
1185    (ipad-x
1186     :allocation :arg
1187     :accessor packer-child-ipad-x
1188     :initarg :ipad-x
1189     :type unsigned-int)
1190    (ipad-y
1191     :allocation :arg
1192     :accessor packer-child-ipad-y
1193     :initarg :ipad-y
1194     :type unsigned-int)
1195    (position
1196     :allocation :arg
1197     :accessor packer-child-position
1198     :initarg :iposition
1199     :type long))
1200   (:metaclass child-class))
1201
1202
1203 ;(defclass socket (container))
1204
1205
1206 (defclass table (container)
1207   ((rows
1208     :allocation :arg
1209     :location "GtkTable::n_rows"
1210     :accessor table-rows
1211     :initarg :rows
1212     :type unsigned-int)
1213    (columns
1214     :allocation :arg
1215     :location "GtkTable::n_columns"
1216     :accessor table-columns
1217     :initarg :columns
1218     :type unsigned-int)
1219    (row-spacing
1220     :allocation :arg
1221     :accessor table-row-spacing
1222     :initarg :row-spacing
1223     :type unsigned-int)
1224    (column-spacing
1225     :allocation :arg
1226     :accessor table-column-spacing
1227     :initarg :column-spacing
1228     :type unsigned-int)
1229    (homogeneous
1230     :allocation :arg
1231     :accessor table-homogeneous-p
1232     :initarg :homogeneous
1233     :type boolean))
1234   (:metaclass container-class)
1235   (:alien-name "GtkTable"))
1236
1237 (defclass table-child (container-child)
1238   ((left-attach
1239     :allocation :arg
1240     :accessor table-child-left-attach
1241     :initarg :left-attach
1242     :type unsigned-int)
1243    (right-attach
1244     :allocation :arg
1245     :accessor table-child-right-attach
1246     :initarg :right-attach
1247     :type unsigned-int)
1248    (top-attach
1249     :allocation :arg
1250     :accessor table-child-top-attach
1251     :initarg :top-attach
1252     :type unsigned-int)
1253    (bottom-attach
1254     :allocation :arg
1255     :accessor table-child-bottom-attach
1256     :initarg :bottom-attach
1257     :type unsigned-int)
1258    (x-options
1259     :allocation :arg
1260     :accessor table-child-x-options
1261     :initarg :x-options
1262     :type attach-options)
1263    (y-options
1264     :allocation :arg
1265     :accessor table-child-y-options
1266     :initarg :y-options
1267     :type attach-options)
1268    (x-padding
1269     :allocation :arg
1270     :accessor table-child-x-padding
1271     :initarg :x-padding
1272     :type unsigned-int)
1273    (y-padding
1274     :allocation :arg
1275     :accessor table-child-y-padding
1276     :initarg :y-padding
1277     :type unsigned-int)
1278    
1279    (x-expand
1280     :allocation :virtual
1281     :location table-child-x-expand-p
1282     :initarg :x-expand
1283     :type boolean)   
1284    (y-expand
1285     :allocation :virtual
1286     :location table-child-y-expand-p
1287     :initarg :y-expand
1288     :type boolean)
1289    (x-shrink
1290     :allocation :virtual
1291     :location table-child-x-shrink-p
1292     :initarg :x-shrink
1293     :type boolean)   
1294    (y-shrink
1295     :allocation :virtual
1296     :location table-child-y-shrink-p
1297     :initarg :y-shrink
1298     :type boolean)   
1299    (x-fill
1300     :allocation :virtual
1301     :location table-child-x-fill-p
1302     :initarg :x-fill
1303     :type boolean)   
1304    (y-fill
1305     :allocation :virtual
1306     :location table-child-y-fill-p
1307     :initarg :y-fill
1308     :type boolean))
1309   (:metaclass child-class))
1310   
1311
1312 (defclass toolbar (container)
1313   ((orientation
1314     :allocation :arg
1315     :accessor toolbar-orientation
1316     :initarg :orientation
1317     :type orientation)
1318    (toolbar-style
1319     :allocation :arg
1320     :accessor toolbar-style
1321     :initarg :toolbar-style
1322     :type toolbar-style)
1323    (space-size
1324     :allocation :arg
1325     :accessor toolbar-space-size
1326     :initarg :space-size
1327     :type unsigned-int)
1328    (space-style
1329     :allocation :arg
1330     :accessor toolbar-space-style
1331     :initarg :space-style
1332     :type toolbar-space-style)
1333    (relief
1334     :allocation :arg
1335     :accessor toolbar-relief
1336     :initarg :relief
1337     :type relief-style)
1338    (tooltips
1339     :allocation :virtual
1340     :location ("gtk_toolbar_get_tooltips" "gtk_toolbar_set_tooltips")
1341     :accessor toolbar-tooltips-p
1342     :initarg :tooltips
1343     :type boolean))
1344   (:metaclass container-class)
1345   (:alien-name "GtkToolbar"))
1346
1347 (defclass toolbar-child (container-child)
1348   ()
1349   (:metaclass child-class))
1350
1351
1352 ;; Deprecated
1353 (defclass tree (container)
1354   ()
1355 ;   :slots
1356 ;   ;; slots not accessible through the arg mechanism
1357 ;   ((selection-mode         :type selection-mode)
1358 ;    (view-mode              :type tree-view-mode)
1359 ;    (view-lines             :type boolean)
1360 ;    (root-tree              :read-only t :type tree)))
1361   (:metaclass container-class)
1362   (:alien-name "GtkTree"))
1363
1364
1365 (defclass calendar (widget)
1366   ()
1367   (:metaclass widget-class)
1368   (:alien-name "GtkCalendar"))
1369
1370
1371 (defclass drawing-area (widget)
1372   ()
1373   (:metaclass widget-class)
1374   (:alien-name "GtkDrawingArea"))
1375
1376 ; (defclass curve drawing-area
1377 ;   :slots
1378 ;   ((curve-type             :read-method :arg :type curve-type)
1379 ;    (min-x                  :access-method :arg :type single-float)
1380 ;    (max-x                  :access-method :arg :type single-float)
1381 ;    (min-y                  :access-method :arg :type single-float)
1382 ;    (max-y                  :access-method :arg :type single-float)))
1383
1384 (defclass editable (widget)
1385   ((position
1386     :allocation :arg
1387     :location "GtkEditable::text_position"
1388     :accessor ediatable-position
1389     :initarg :position
1390     :type int)
1391    (editable
1392     :allocation :arg
1393     :accessor ediatable-editable-p
1394     :initarg :editabe
1395     :type boolean)
1396    (text
1397     :allocation :virtual
1398     :location editable-text
1399     :initarg text
1400     :type string))
1401   (:metaclass widget-class)
1402   (:alien-name "GtkEditable"))
1403
1404   
1405 (defclass entry (editable)
1406   ((max-length
1407     :allocation :arg
1408     :accessor entry-max-length
1409     :initarg :max-length
1410     :type unsigned-int)
1411    (visible
1412     :allocation :arg
1413     :location "GtkEntry::visibility"
1414     :accessor entry-visible-p
1415     :initarg :visible
1416     :type boolean))
1417   (:metaclass widget-class)
1418   (:alien-name "GtkEntry"))
1419   
1420
1421 (defclass combo (hbox)
1422   ((entry
1423     :allocation :virtual
1424     :location "gtk_combo_get_entry"
1425     :reader combo-entry
1426     :type entry)
1427    (use-arrows
1428     :allocation :virtual
1429     :location ("gtk_combo_get_use_arrows" "gtk_combo_set_use_arrows")
1430     :accessor combo-use-arrows-p
1431     :initarg :use-arrows
1432     :type boolean)
1433    (use-arrows-always
1434     :allocation :virtual
1435     :location
1436     ("gtk_combo_get_use_arrows_always" "gtk_combo_set_use_arrows_always")
1437     :accessor combo-use-arrows-always-p
1438     :initarg :use-arrows-always
1439     :type boolean)
1440    (case-sensitive
1441     :allocation :virtual
1442     :location ("gtk_combo_get_case_sensitive" "gtk_combo_set_case_sensitive")
1443     :accessor combo-case-sensitive-p
1444     :initarg :case-sensitive
1445     :type boolean))
1446   (:metaclass widget-class)
1447   (:alien-name "GtkCombo"))
1448   
1449
1450 (defclass spin-button (entry)
1451   ((adjustment
1452     :allocation :arg
1453     :accessor spin-button-adjustment
1454     :initarg :adjustment
1455     :type adjustment)
1456    (climb-rate
1457     :allocation :arg
1458     :accessor spin-button-climb-rate
1459     :initarg :climb-rate
1460     :type single-float)
1461    (digits
1462     :allocation :arg
1463     :accessor spin-button-digits
1464     :initarg :digits
1465     :type unsigned-int)
1466    (snap-to-ticks
1467     :allocation :arg
1468     :accessor spin-button-snap-to-ticks-p
1469     :initarg :snap-to-ticks
1470     :type boolean)
1471    (numeric
1472     :allocation :arg
1473     :accessor spin-button-numeric-p
1474     :initarg :numeric
1475     :type boolean)
1476    (wrap
1477     :allocation :arg
1478     :accessor spin-button-wrap-p
1479     :initarg :wrap
1480     :type boolean)
1481    (update-policy
1482     :allocation :arg
1483     :accessor spin-button-update-policy
1484     :initarg :update-policy
1485     :type spin-button-update-policy)
1486    (shadow-type
1487     :allocation :arg
1488     :accessor spin-button-shadow-type
1489     :initarg :shadow-type
1490     :type shadow-type)
1491    (value
1492     :allocation :arg
1493     :accessor spin-button-value
1494     :initarg :value
1495     :type single-float))
1496   (:metaclass widget-class)
1497   (:alien-name "GtkSpinButton"))
1498   
1499
1500 ;; Deprecated
1501 ; (defclass text editable
1502 ;   :slots
1503 ;   ((hadjustment            :access-method :arg :type adjustment)
1504 ;    (vadjustment            :access-method :arg :type adjustment)
1505 ;    (line-wrap              :read-method :arg :type boolean)
1506 ;    (word-wrap              :read-method :arg :type boolean)
1507 ;    ;; slots not accessible through the arg mechanism
1508 ;    (point                  :type unsigned-int)
1509 ;    (length                 :read-only t :type unsigned-int)))
1510
1511 (defclass ruler (widget)
1512   ((lower
1513     :allocation :arg
1514     :accessor ruler-lower
1515     :initarg :lower
1516     :type single-float)
1517    (upper
1518     :allocation :arg
1519     :accessor ruler-upper
1520     :initarg :upper
1521     :type single-float)
1522    (position
1523     :allocation :arg
1524     :accessor ruler-position
1525     :initarg :position
1526     :type single-float)
1527    (max-size
1528     :allocation :arg
1529     :accessor ruler-max-size
1530     :initarg :max-size
1531     :type single-float)
1532    (metric
1533     :allocation :virtual
1534     :location (nil "gtk_ruler_set_metric")
1535     :accessor ruler-metric
1536     :initarg :metric
1537     :type metric-type))
1538   (:metaclass widget-class)
1539   (:alien-name "GtkRuler"))
1540
1541
1542 (defclass hruler (ruler)
1543   ()
1544   (:metaclass widget-class)
1545   (:alien-name "GtkHRuler"))
1546
1547
1548 (defclass vruler (ruler)
1549   ()
1550   (:metaclass widget-class)
1551   (:alien-name "GtkVRuler"))
1552
1553
1554 (defclass range (widget)
1555   ((update-policy
1556     :allocation :arg
1557     :accessor range-update-policy
1558     :initarg :update-policy
1559     :type update-type)
1560    (adjustment
1561     :allocation :virtual
1562     :location ("gtk_range_get_adjustment" "gtk_range_set_adjustment")
1563     :accessor ruler-adjustment
1564     :initarg :adjustment
1565     :type adjustment))
1566   (:metaclass widget-class)
1567   (:alien-name "GtkRange"))
1568
1569
1570 (defclass scale (range)
1571   ((digits
1572     :allocation :arg
1573     :accessor scale-digits
1574     :initarg :digits
1575     :type unsigned-int)
1576    (draw-value
1577     :allocation :arg
1578     :accessor scale-draw-value-p
1579     :initarg :draw-value
1580     :type boolean)
1581    (value-position
1582     :allocation :arg
1583     :location "GtkScale::value_pos"
1584     :accessor scale-value-position
1585     :initarg :value-position
1586     :type position-type)
1587    (value-width
1588     :allocation :virtual
1589     :location "gtk_scale_get_value_width"
1590     :reader ruler-value-width
1591     :type int))
1592   (:metaclass widget-class)
1593   (:alien-name "GtkScale"))
1594
1595
1596 (defclass hscale (scale)
1597   ()
1598   (:metaclass widget-class)
1599   (:alien-name "GtkHScale"))
1600
1601
1602 (defclass vscale (scale)
1603   ()
1604   (:metaclass widget-class)
1605   (:alien-name "GtkVScale"))
1606
1607
1608 (defclass scrollbar (range)
1609   ()
1610   (:metaclass widget-class)
1611   (:alien-name "GtkScrollbar"))
1612
1613
1614 (defclass hscrollbar (scrollbar)
1615   ()
1616   (:metaclass widget-class)
1617   (:alien-name "GtkHScrollbar"))
1618
1619
1620 (defclass vscrollbar (scrollbar)
1621   ()
1622   (:metaclass widget-class)
1623   (:alien-name "GtkVScrollbar"))
1624
1625
1626 (defclass separator (widget)
1627   ()
1628   (:metaclass widget-class)
1629   (:alien-name "GtkSeparator"))
1630
1631
1632 (defclass hseparator (separator)
1633   ()
1634   (:metaclass widget-class)
1635   (:alien-name "GtkHSeparator"))
1636
1637
1638 (defclass vseparator (separator)
1639   ()
1640   (:metaclass widget-class)
1641   (:alien-name "GtkVSeparator"))
1642
1643
1644 ; (defclass preview widget
1645 ;   :slots
1646 ;   ((expand                 :read-method :arg :type boolean)))
1647
1648 ; (defclass progress widget
1649 ;   :slots
1650 ;   ((activity-mode          :read-method :arg :type boolean)
1651 ;    (show-text              :read-method :arg :type boolean)
1652 ;    (text-xalign            :access-method :arg :type single-float)
1653 ;    (text-yalign            :access-method :arg :type single-float)
1654 ;    ;; slots not accessible through the arg mechanism
1655 ;    (format-string          :type string)
1656 ;    (adjustment             :type adjustment)
1657 ;    (percentage             :c-reader "gtk_progress_get_current_percentage"
1658 ;                          :type single-float)
1659 ;    (value                  :type single-float)
1660 ;    (text                   :c-reader "gtk_progress_get_current_text"
1661 ;                          :read-only t :type string)))
1662
1663 ; (defclass progress-bar progress
1664 ;   :slots
1665 ;   ((adjustment             :c-writer "gtk_progress_set_adjustment"
1666 ;                          :read-method :arg :type adjustment)
1667 ;    (orientation            :read-method :arg :type progress-bar-orientation)
1668 ;    (bar-style              :read-method :arg :accessor progress-bar-style
1669 ;                          :type progress-bar-style)
1670 ;    (activity-step          :read-method :arg :type unsigned-int)
1671 ;    (activity-blocks        :read-method :arg :type unsigned-int)
1672 ;    (discrete-blocks        :read-method :arg :type unsigned-int)))
1673
1674 ; (defclass item-factory object)
1675