# Module GToolbox

    module GToolbox: sig .. end

Useful functions for LablGTK.

## Menus

    type menu_entry = [ `C of string * bool * (bool -> unit)
           | `I of string * (unit -> unit)
           | `M of string * menu_entry list
           | `R of (string * bool * (bool -> unit)) list
           | `S ]

Tree description of a menu

    val build_menu : GMenu.menu -> entries:menu_entry list -> unit

Build a menu from a tree description

    val popup_menu : entries:menu_entry list -> button:int -> time:int32 -> unit

Popup a menu created from the given list of labels and functions.

## Parametrized dialog windows

    val question_box : title:string ->
           buttons:string list -> ?default:int -> ?icon:#GObj.widget -> string -> int

This function is used to display a question in a dialog box, with a parametrized list of buttons. The function returns the number of the clicked button (starting at 1), or 0 if the window is savagedly destroyed.
`title` : the title of the dialog
`buttons` : the list of button labels.
`default` : the index of the default answer
`icon` : a widget (usually a pixmap) which can be displayed on the left of the window.

    val message_box : title:string -> ?icon:#GObj.widget -> ?ok:string -> string -> unit

This function is used to display a message in a dialog box with just an Ok button. We use `question_box` with just an ok button.
`title` : the title of the dialog
`icon` : a widget (usually a pixmap) which can be displayed on the left of the window.
`ok` : the text for the ok button (default is "Ok")

    val input_string : title:string ->
           ?ok:string -> ?cancel:string -> ?text:string -> string -> string option

Make the user type in a string.
Returns `None` if the user clicked on cancel, or `Some s` if the user clicked on the ok button.
`title` : the title of the dialog
`ok` : the text for the confirmation button (default is "Ok")
`cancel` : the text for the cancel button (default is "Cancel")
`text` : the default text displayed in the entry widget

    val input_text : title:string ->
           ?ok:string -> ?cancel:string -> ?text:string -> string -> string option

Make the user type in a text.
Returns `None` if the user clicked on cancel, or `Some s` if the user clicked on the ok button.
`title` : the title of the dialog
`ok` : the text for the confirmation button (default is "Ok")
`cancel` : the text for the cancel button (default is "Cancel")
`text` : the default text displayed in the entry widget (utf8)

    val select_file : title:string ->
           ?dir:string Pervasives.ref -> ?filename:string -> unit -> string option

This function allows the user to select a file and returns the selected file name. A VOIR : multi-selection ?

    type 'a tree = [ `L of 'a | `N of 'a * 'a tree list ]

A tree.

    class ['a] tree_selection : tree:'a tree -> label:('a -> string) -> info:('a -> string) -> ?packing:GObj.widget -> unit -> ?show:bool -> unit -> object .. end

A class to make the user select a node in a tree.

    val tree_selection_dialog : tree:'a tree ->
           label:('a -> string) ->
           info:('a -> string) ->
           title:string ->
           ?ok:string ->
           ?cancel:string ->
           ?width:int -> ?height:int -> ?show:bool -> unit -> 'a option

A function to make the user select a node in a tree.
Returns The data associated to the selected node, or None if the user canceled the selection.
`tree` : the to build a tree selection widget
`title` : is the title of the window.
`ok` : the text for the confirmation button (default is "Ok")
`cancel` : the text for the cancel button (default is "Cancel")

## Keyboard shortcuts

Associate messages to key combinations.

    type key_combination = [ `A | `C | `S ] list * char

A keyboard shorcut: a combination of Alt, Control and Shift and a letter.

    type 'a shortcut_specification = {

`` | `name : `string`;`
`` | `keys : `key_combination list`;`
`` | `message : `'a`;`

}
A shortcut specification: name of a GTK+ signal to emit, keyboard shortcuts and the message to send. The name must be unique.

    val create_shortcuts : window:#GWindow.window_skel ->
           shortcuts:'a shortcut_specification list ->
           callback:('a -> unit) -> unit

Setup the given shortcut spec list for the given window and callback. This create the GTK+ signal, associate the keyboard shortcuts to it, make the window listen to these shortcuts and eventually call the given callback with the messages from the shortcut specification.

## Miscellaneous functions

    val autosize_clist : 'a GList.clist -> unit

Resize the columns of a clist according to the length of the content and the title of each column.