(* $Id$ *) open Gaux open Gtk open GtkBase module MenuItem = struct let cast w : menu_item obj = Object.try_cast w "GtkMenuItem" external coerce : [>`menuitem] obj -> menu_item obj = "%identity" external create : unit -> menu_item obj = "ml_gtk_menu_item_new" external create_with_label : string -> menu_item obj = "ml_gtk_menu_item_new_with_label" external tearoff_create : unit -> menu_item obj = "ml_gtk_tearoff_menu_item_new" let create ?label () = match label with None -> create () | Some label -> create_with_label label external set_submenu : [>`menuitem] obj -> [>`menu] obj -> unit = "ml_gtk_menu_item_set_submenu" external remove_submenu : [>`menuitem] obj -> unit = "ml_gtk_menu_item_remove_submenu" external configure : [>`menuitem] obj -> show_toggle:bool -> show_indicator:bool -> unit = "ml_gtk_menu_item_configure" external activate : [>`menuitem] obj -> unit = "ml_gtk_menu_item_activate" external right_justify : [>`menuitem] obj -> unit = "ml_gtk_menu_item_right_justify" module Signals = struct open GtkSignal let activate : ([>`menuitem],_) t = { name = "activate"; marshaller = marshal_unit } let activate_item : ([>`menuitem],_) t = { name = "activate_item"; marshaller = marshal_unit } end end module CheckMenuItem = struct let cast w : check_menu_item obj = Object.try_cast w "GtkCheckMenuItem" external coerce : [>`checkmenuitem] obj -> check_menu_item obj = "%identity" external create : unit -> check_menu_item obj = "ml_gtk_check_menu_item_new" external create_with_label : string -> check_menu_item obj = "ml_gtk_check_menu_item_new_with_label" let create ?label () = match label with None -> create () | Some label -> create_with_label label external set_active : [>`checkmenuitem] obj -> bool -> unit = "ml_gtk_check_menu_item_set_active" external get_active : [>`checkmenuitem] obj -> bool = "ml_gtk_check_menu_item_get_active" external set_show_toggle : [>`checkmenuitem] obj -> bool -> unit = "ml_gtk_check_menu_item_set_show_toggle" let set ?active ?show_toggle w = may active ~f:(set_active w); may show_toggle ~f:(set_show_toggle w) external toggled : [>`checkmenuitem] obj -> unit = "ml_gtk_check_menu_item_toggled" module Signals = struct open GtkSignal let toggled : ([>`checkmenuitem],_) t = { name = "toggled"; marshaller = marshal_unit } end end module RadioMenuItem = struct let cast w : radio_menu_item obj = Object.try_cast w "GtkRadioMenuItem" external create : radio_menu_item group -> radio_menu_item obj = "ml_gtk_radio_menu_item_new" external create_with_label : radio_menu_item group -> string -> radio_menu_item obj = "ml_gtk_radio_menu_item_new_with_label" let create ?(group = None) ?label () = match label with None -> create group | Some label -> create_with_label group label external set_group : [>`radiomenuitem] obj -> radio_menu_item group -> unit = "ml_gtk_radio_menu_item_set_group" end module OptionMenu = struct let cast w : option_menu obj = Object.try_cast w "GtkOptionMenu" external create : unit -> option_menu obj = "ml_gtk_option_menu_new" external get_menu : [>`optionmenu] obj -> menu obj = "ml_gtk_option_menu_get_menu" external set_menu : [>`optionmenu] obj -> [>`menu] obj -> unit = "ml_gtk_option_menu_set_menu" external remove_menu : [>`optionmenu] obj -> unit = "ml_gtk_option_menu_remove_menu" external set_history : [>`optionmenu] obj -> int -> unit = "ml_gtk_option_menu_set_history" let set ?menu ?history w = may menu ~f:(set_menu w); may history ~f:(set_history w) end module MenuShell = struct let cast w : menu_shell obj = Object.try_cast w "GtkMenuShell" external coerce : [>`menushell] obj -> menu_shell obj = "%identity" external append : [>`menushell] obj -> [>`widget] obj -> unit = "ml_gtk_menu_shell_append" external prepend : [>`menushell] obj -> [>`widget] obj -> unit = "ml_gtk_menu_shell_prepend" external insert : [>`menushell] obj -> [>`widget] obj -> pos:int -> unit = "ml_gtk_menu_shell_insert" external deactivate : [>`menushell] obj -> unit = "ml_gtk_menu_shell_deactivate" module Signals = struct open GtkSignal let deactivate : ([>`menushell],_) t = { name = "deactivate"; marshaller = marshal_unit } end end module Menu = struct let cast w : menu obj = Object.try_cast w "GtkMenu" external create : unit -> menu obj = "ml_gtk_menu_new" external popup : [>`menu] obj -> [>`menushell] optobj -> [>`menuitem] optobj -> button:int -> time:int -> unit = "ml_gtk_menu_popup" let popup ?parent_menu ?parent_item w = popup w (Gpointer.optboxed parent_menu) (Gpointer.optboxed parent_item) external popdown : [>`menu] obj -> unit = "ml_gtk_menu_popdown" external get_active : [>`menu] obj -> widget obj= "ml_gtk_menu_get_active" external set_active : [>`menu] obj -> int -> unit = "ml_gtk_menu_set_active" external set_accel_group : [>`menu] obj -> accel_group -> unit = "ml_gtk_menu_set_accel_group" external get_accel_group : [>`menu] obj -> accel_group = "ml_gtk_menu_get_accel_group" external ensure_uline_accel_group : [>`menu] obj -> accel_group = "ml_gtk_menu_ensure_uline_accel_group" external attach_to_widget : [>`menu] obj -> [>`widget] obj -> unit = "ml_gtk_menu_attach_to_widget" external get_attach_widget : [>`menu] obj -> widget obj = "ml_gtk_menu_get_attach_widget" external detach : [>`menu] obj -> unit = "ml_gtk_menu_detach" let set ?active ?accel_group w = may active ~f:(set_active w); may accel_group ~f:(set_accel_group w) end module MenuBar = struct let cast w : menu_bar obj = Object.try_cast w "GtkMenuBar" external create : unit -> menu_bar obj = "ml_gtk_menu_bar_new" end