--- /dev/null
+(* $Id$ *)
+
+open Gaux
+open Gtk
+open GtkBase
+open GtkButton
+open GObj
+open GContainer
+
+class button_skel obj = object (self)
+ inherit container obj
+ method clicked () = Button.clicked obj
+ method grab_default () =
+ Widget.set_can_default obj true;
+ Widget.grab_default obj
+end
+
+class button_signals obj = object
+ inherit container_signals obj
+ method clicked = GtkSignal.connect ~sgn:Button.Signals.clicked ~after obj
+ method pressed = GtkSignal.connect ~sgn:Button.Signals.pressed ~after obj
+ method released = GtkSignal.connect ~sgn:Button.Signals.released ~after obj
+ method enter = GtkSignal.connect ~sgn:Button.Signals.enter ~after obj
+ method leave = GtkSignal.connect ~sgn:Button.Signals.leave ~after obj
+end
+
+class button obj = object
+ inherit button_skel (Button.coerce obj)
+ method connect = new button_signals obj
+ method event = new GObj.event_ops obj
+end
+
+let button ?label ?border_width ?width ?height ?packing ?show () =
+ let w = Button.create ?label () in
+ Container.set w ?border_width ?width ?height;
+ pack_return (new button w) ~packing ~show
+
+class toggle_button_signals obj = object
+ inherit button_signals obj
+ method toggled =
+ GtkSignal.connect ~sgn:ToggleButton.Signals.toggled obj ~after
+end
+
+class toggle_button obj = object
+ inherit button_skel obj
+ method connect = new toggle_button_signals obj
+ method active = ToggleButton.get_active obj
+ method set_active = ToggleButton.set_active obj
+ method set_draw_indicator = ToggleButton.set_mode obj
+end
+
+let toggle_button ?label ?active ?draw_indicator
+ ?border_width ?width ?height ?packing ?show () =
+ let w = ToggleButton.create_toggle ?label () in
+ ToggleButton.set w ?active ?draw_indicator;
+ Container.set w ?border_width ?width ?height;
+ pack_return (new toggle_button w) ~packing ~show
+
+let check_button ?label ?active ?draw_indicator
+ ?border_width ?width ?height ?packing ?show () =
+ let w = ToggleButton.create_check ?label () in
+ ToggleButton.set w ?active ?draw_indicator;
+ Container.set w ?border_width ?width ?height;
+ pack_return (new toggle_button w) ~packing ~show
+
+class radio_button obj = object
+ inherit toggle_button (obj : Gtk.radio_button obj)
+ method set_group = RadioButton.set_group obj
+ method group = Some obj
+end
+
+let radio_button ?group ?label ?active ?draw_indicator
+ ?border_width ?width ?height ?packing ?show () =
+ let w = RadioButton.create ?group ?label () in
+ ToggleButton.set w ?active ?draw_indicator;
+ Container.set w ?border_width ?width ?height;
+ pack_return (new radio_button w) ~packing ~show
+
+class toolbar obj = object
+ inherit container_full (obj : Gtk.toolbar obj)
+ method insert_widget ?tooltip ?tooltip_private ?pos w =
+ Toolbar.insert_widget obj (as_widget w) ?tooltip ?tooltip_private ?pos
+
+ method insert_button ?text ?tooltip ?tooltip_private ?icon
+ ?pos ?callback () =
+ let icon = may_map icon ~f:as_widget in
+ new button
+ (Toolbar.insert_button obj ~kind:`BUTTON ?icon ?text
+ ?tooltip ?tooltip_private ?pos ?callback ())
+
+ method insert_toggle_button ?text ?tooltip ?tooltip_private ?icon
+ ?pos ?callback () =
+ let icon = may_map icon ~f:as_widget in
+ new toggle_button
+ (ToggleButton.cast
+ (Toolbar.insert_button obj ~kind:`TOGGLEBUTTON ?icon ?text
+ ?tooltip ?tooltip_private ?pos ?callback ()))
+
+ method insert_radio_button ?text ?tooltip ?tooltip_private ?icon
+ ?pos ?callback () =
+ let icon = may_map icon ~f:as_widget in
+ new radio_button
+ (RadioButton.cast
+ (Toolbar.insert_button obj ~kind:`RADIOBUTTON ?icon ?text
+ ?tooltip ?tooltip_private ?pos ?callback ()))
+
+ method insert_space = Toolbar.insert_space obj
+
+ method set_orientation = Toolbar.set_orientation obj
+ method set_style = Toolbar.set_style obj
+ method set_space_size = Toolbar.set_space_size obj
+ method set_space_style = Toolbar.set_space_style obj
+ method set_tooltips = Toolbar.set_tooltips obj
+ method set_button_relief = Toolbar.set_button_relief obj
+ method button_relief = Toolbar.get_button_relief obj
+end
+
+let toolbar ?(orientation=`HORIZONTAL) ?style
+ ?space_size ?space_style ?tooltips ?button_relief
+ ?border_width ?width ?height ?packing ?show () =
+ let w = Toolbar.create orientation ?style () in
+ Toolbar.set w ?space_size ?space_style ?tooltips ?button_relief;
+ Container.set w ?border_width ?width ?height;
+ pack_return (new toolbar w) ~packing ~show