sig
  val framac_logo : GdkPixbuf.pixbuf option
  val framac_icon : GdkPixbuf.pixbuf option
  module Icon :
    sig
      type kind =
          Frama_C
        | Unmark
        | Fold
        | Unfold
        | Custom of string
        | Feedback of Property_status.Feedback.t
      val register : name:string -> file:string -> unit
      val get : Gtk_helper.Icon.kind -> GdkPixbuf.pixbuf
      val default : unit -> GdkPixbuf.pixbuf
      val clear : unit -> unit
    end
  module Configuration :
    sig
      type configData =
          ConfInt of int
        | ConfBool of bool
        | ConfFloat of float
        | ConfString of string
        | ConfList of Gtk_helper.Configuration.configData list
      val load : unit -> unit
      val save : unit -> unit
      val reset : unit -> unit
      val set : string -> Gtk_helper.Configuration.configData -> unit
      val find : string -> Gtk_helper.Configuration.configData
      val find_int : ?default:int -> string -> int
      val use_int : string -> (int -> unit) -> unit
      val set_int : string -> int -> unit
      val find_bool : ?default:bool -> string -> bool
      val use_bool : string -> (bool -> unit) -> unit
      val set_bool : string -> bool -> unit
      val find_float : ?default:float -> string -> float
      val use_float : string -> (float -> unit) -> unit
      val set_float : string -> float -> unit
      val find_string : ?default:string -> string -> string
      val use_string : string -> (string -> unit) -> unit
      val find_list : string -> Gtk_helper.Configuration.configData list
      val use_list :
        string -> (Gtk_helper.Configuration.configData list -> unit) -> unit
      val set_list :
        string -> Gtk_helper.Configuration.configData list -> unit
      class type ['a] selector =
        object
          method connect : ('-> unit) -> unit
          method set : '-> unit
        end
      val config_int :
        key:string ->
        default:int -> int #Gtk_helper.Configuration.selector -> unit
      val config_bool :
        key:string ->
        default:bool -> bool #Gtk_helper.Configuration.selector -> unit
      val config_string :
        key:string ->
        default:string -> string #Gtk_helper.Configuration.selector -> unit
      val config_float :
        key:string ->
        default:float -> float #Gtk_helper.Configuration.selector -> unit
      val config_values :
        key:string ->
        default:'->
        values:('a * string) list ->
        '#Gtk_helper.Configuration.selector -> unit
    end
  val make_tag :
    < create_tag : ?name:string -> GText.tag_property list -> GText.tag;
      tag_table : Gtk.text_tag_table; .. > ->
    name:string -> GText.tag_property list -> GText.tag
  val apply_tag :
    GSourceView.source_buffer -> GText.tag -> int -> int -> unit
  val remove_tag :
    GSourceView.source_buffer -> GText.tag -> int -> int -> unit
  val cleanup_tag : GSourceView.source_buffer -> GText.tag -> unit
  val cleanup_all_tags : GSourceView.source_buffer -> unit
  val make_formatter :
    ?flush:(unit -> unit) -> #GText.buffer -> Stdlib.Format.formatter
  val log_redirector : ?flush:(unit -> unit) -> (string -> unit) -> unit
  val redirect : Stdlib.Format.formatter -> #GText.buffer -> unit
  val spawn_command :
    ?timeout:int ->
    ?stdout:Stdlib.Buffer.t ->
    ?stderr:Stdlib.Buffer.t ->
    string -> string array -> (Unix.process_status -> unit) -> unit
  val gui_unlocked : bool Stdlib.ref
  val register_locking_machinery :
    ?lock_last:bool ->
    lock:(bool -> unit) -> unlock:(unit -> unit) -> unit -> unit
  val do_tooltip : ?tooltip:string -> < coerce : GObj.widget; .. > -> unit
  type 'a chooser =
      GPack.box -> string -> (unit -> 'a) -> ('-> unit) -> unit -> unit
  val on_bool :
    ?tooltip:string -> ?use_markup:bool -> bool Gtk_helper.chooser
  val range_selector :
    ?tooltip:string ->
    ?use_markup:bool ->
    GPack.box ->
    label:string ->
    lower:int -> upper:int -> (int -> unit) -> (unit -> int) -> unit -> unit
  val on_int :
    ?tooltip:string ->
    ?use_markup:bool ->
    ?lower:int ->
    ?upper:int ->
    ?sensitive:(unit -> bool) -> ?width:int -> int Gtk_helper.chooser
  val on_string :
    ?tooltip:string ->
    ?use_markup:bool ->
    ?validator:(string -> bool) -> ?width:int -> string Gtk_helper.chooser
  val on_string_set :
    ?tooltip:string ->
    ?use_markup:bool -> ?width:int -> string Gtk_helper.chooser
  val on_string_completion :
    ?tooltip:string ->
    ?use_markup:bool ->
    ?validator:(string -> bool) -> string list -> string Gtk_helper.chooser
  val on_combo :
    string list ->
    ?tooltip:string ->
    ?use_markup:bool -> ?width:int -> string Gtk_helper.chooser
  class type host =
    object
      method error :
        ?parent:GWindow.window_skel ->
        ?reset:bool ->
        ('a, Stdlib.Format.formatter, unit) Stdlib.format -> 'a
      method full_protect :
        cancelable:bool ->
        ?parent:GWindow.window_skel -> (unit -> 'a) -> 'a option
      method protect :
        cancelable:bool ->
        ?parent:GWindow.window_skel -> (unit -> unit) -> unit
      method private set_reset : (unit -> unit) -> unit
    end
  class error_manager : ?reset:(unit -> unit) -> GWindow.window_skel -> host
  class type source_files_chooser_host =
    object
      method error :
        ?parent:GWindow.window_skel ->
        ?reset:bool -> ('a, Format.formatter, unit) format -> 'a
      method full_protect :
        cancelable:bool ->
        ?parent:GWindow.window_skel -> (unit -> 'a) -> 'a option
      method main_window : GWindow.window_skel
      method protect :
        cancelable:bool ->
        ?parent:GWindow.window_skel -> (unit -> unit) -> unit
      method reset : unit -> unit
      method private set_reset : (unit -> unit) -> unit
    end
  val source_files_chooser :
    Gtk_helper.source_files_chooser_host ->
    string list -> (string list -> unit) -> unit
  val select_file :
    ?title:string ->
    ?dir:string Stdlib.ref -> ?filename:string -> unit -> string option
  val refresh_gui : unit -> unit
  val string_selector : string list -> (GObj.widget -> unit) -> GEdit.entry
  val expand_to_path : GTree.view -> Gtk.tree_path -> unit
  val make_string_list :
    packing:(GObj.widget -> unit) ->
    (string -> unit) * (unit -> unit) * (unit -> string list)
  val place_paned : GPack.paned -> float -> unit
  val save_paned_ratio : string -> GPack.paned -> unit
  val old_gtk_compat : ('-> unit) -> '-> unit
  val trace_event : GObj.event_ops -> unit
  val make_text_page :
    ?pos:int ->
    GPack.notebook -> string -> (GPack.notebook -> unit) * GText.view
  val open_in_external_viewer : ?line:int -> Datatype.Filepath.t -> unit
  module MAKE_CUSTOM_LIST :
    functor (A : sig type t end->
      sig
        type custom_list = { finfo : A.t; fidx : int; }
        val inbound : int -> 'a array -> bool
        class custom_list_class :
          GTree.column_list ->
          object
            val id : int
            val obj : Gtk.tree_model_custom
            method as_model : Gtk.tree_model
            method clear : unit -> unit
            method coerce : GTree.model
            method connect : GTree.model_signals
            method custom_decode_iter :
              Gtk_helper.MAKE_CUSTOM_LIST.custom_list ->
              unit -> unit -> Gtk_helper.MAKE_CUSTOM_LIST.custom_list
            method custom_encode_iter :
              Gtk_helper.MAKE_CUSTOM_LIST.custom_list ->
              Gtk_helper.MAKE_CUSTOM_LIST.custom_list * unit * unit
            method custom_flags : GtkEnums.tree_model_flags list
            method custom_get_column_type : int -> Gobject.g_type
            method custom_get_iter :
              Gtk.tree_path -> Gtk_helper.MAKE_CUSTOM_LIST.custom_list option
            method custom_get_path :
              Gtk_helper.MAKE_CUSTOM_LIST.custom_list -> Gtk.tree_path
            method custom_get_value :
              Gtk_helper.MAKE_CUSTOM_LIST.custom_list ->
              int -> Gobject.g_value -> unit
            method custom_iter_children :
              Gtk_helper.MAKE_CUSTOM_LIST.custom_list option ->
              Gtk_helper.MAKE_CUSTOM_LIST.custom_list option
            method custom_iter_has_child :
              Gtk_helper.MAKE_CUSTOM_LIST.custom_list -> bool
            method custom_iter_n_children :
              Gtk_helper.MAKE_CUSTOM_LIST.custom_list option -> int
            method custom_iter_next :
              Gtk_helper.MAKE_CUSTOM_LIST.custom_list ->
              Gtk_helper.MAKE_CUSTOM_LIST.custom_list option
            method custom_iter_nth_child :
              Gtk_helper.MAKE_CUSTOM_LIST.custom_list option ->
              int -> Gtk_helper.MAKE_CUSTOM_LIST.custom_list option
            method custom_iter_parent :
              Gtk_helper.MAKE_CUSTOM_LIST.custom_list ->
              Gtk_helper.MAKE_CUSTOM_LIST.custom_list option
            method custom_n_columns : int
            method custom_ref_node :
              Gtk_helper.MAKE_CUSTOM_LIST.custom_list -> unit
            method custom_row_changed :
              Gtk.tree_path ->
              Gtk_helper.MAKE_CUSTOM_LIST.custom_list -> unit
            method custom_row_deleted : Gtk.tree_path -> unit
            method custom_row_has_child_toggled :
              Gtk.tree_path ->
              Gtk_helper.MAKE_CUSTOM_LIST.custom_list -> unit
            method custom_row_inserted :
              Gtk.tree_path ->
              Gtk_helper.MAKE_CUSTOM_LIST.custom_list -> unit
            method custom_rows_reordered :
              Gtk.tree_path ->
              Gtk_helper.MAKE_CUSTOM_LIST.custom_list option ->
              int array -> unit
            method custom_unref_node :
              Gtk_helper.MAKE_CUSTOM_LIST.custom_list -> unit
            method custom_value :
              Gobject.g_type ->
              Gtk_helper.MAKE_CUSTOM_LIST.custom_list ->
              column:int -> Gobject.basic
            method flags : GtkEnums.tree_model_flags list
            method foreach : (Gtk.tree_path -> Gtk.tree_iter -> bool) -> unit
            method get : row:Gtk.tree_iter -> column:'GTree.column -> 'b
            method get_column_type : int -> Gobject.g_type
            method get_iter : Gtk.tree_path -> Gtk.tree_iter
            method get_iter_first : Gtk.tree_iter option
            method get_path : Gtk.tree_iter -> Gtk.tree_path
            method get_row_reference : Gtk.tree_path -> GTree.row_reference
            method insert : A.t -> unit
            method iter_children :
              ?nth:int -> Gtk.tree_iter option -> Gtk.tree_iter
            method iter_has_child : Gtk.tree_iter -> bool
            method iter_n_children : Gtk.tree_iter option -> int
            method iter_next : Gtk.tree_iter -> bool
            method iter_parent : Gtk.tree_iter -> Gtk.tree_iter option
            method misc : GObj.gobject_ops
            method n_columns : int
            method row_changed : Gtk.tree_path -> Gtk.tree_iter -> unit
          end
        val custom_list :
          unit -> Gtk_helper.MAKE_CUSTOM_LIST.custom_list_class
        val make_view_column :
          Gtk_helper.MAKE_CUSTOM_LIST.custom_list_class ->
          ('b, 'a) #GTree.cell_renderer_skel ->
          (A.t -> 'a list) -> title:string -> GTree.view_column
      end
  val input_string :
    parent:GWindow.window ->
    title:string ->
    ?ok:string -> ?cancel:string -> ?text:string -> string -> string option
  val image_menu_item :
    image:GObj.widget ->
    text:string -> packing:(GMenu.menu_item -> unit) -> GMenu.menu_item
end