sig
  val cast : 'Gobject.obj -> Gtk.editable Gtk.obj
  module S :
    sig
      val changed : ([> `editable ], unit -> unit) GtkSignal.t
      val delete_text :
        ([> `editable ], start:int -> stop:int -> unit) GtkSignal.t
      val insert_text :
        ([> `editable ], string -> pos:int Stdlib.ref -> unit) GtkSignal.t
    end
  external select_region :
    [> `editable ] Gtk.obj -> start:int -> stop:int -> unit
    = "ml_gtk_editable_select_region"
  external get_selection_bounds :
    [> `editable ] Gtk.obj -> (int * int) option
    = "ml_gtk_editable_get_selection_bounds"
  external insert_text : [> `editable ] Gtk.obj -> string -> pos:int -> int
    = "ml_gtk_editable_insert_text"
  external delete_text :
    [> `editable ] Gtk.obj -> start:int -> stop:int -> unit
    = "ml_gtk_editable_delete_text"
  external get_chars :
    [> `editable ] Gtk.obj -> start:int -> stop:int -> string
    = "ml_gtk_editable_get_chars"
  external cut_clipboard : [> `editable ] Gtk.obj -> unit
    = "ml_gtk_editable_cut_clipboard"
  external copy_clipboard : [> `editable ] Gtk.obj -> unit
    = "ml_gtk_editable_copy_clipboard"
  external paste_clipboard : [> `editable ] Gtk.obj -> unit
    = "ml_gtk_editable_paste_clipboard"
  external delete_selection : [> `editable ] Gtk.obj -> unit
    = "ml_gtk_editable_delete_selection"
  external get_position : [> `editable ] Gtk.obj -> int
    = "ml_gtk_editable_get_position"
  external set_position : [> `editable ] Gtk.obj -> int -> unit
    = "ml_gtk_editable_set_position"
  external get_editable : [> `editable ] Gtk.obj -> bool
    = "ml_gtk_editable_get_editable"
  external set_editable : [> `editable ] Gtk.obj -> bool -> unit
    = "ml_gtk_editable_set_editable"
end