sig
  val framac_logo : GdkPixbuf.pixbuf option
  val framac_icon : GdkPixbuf.pixbuf option
  module Icon :
    sig
      type kind =
          Frama_C
        | Unmark
        | 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
    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 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 find_bool : ?default:bool -> string -> bool
      val use_bool : string -> (bool -> unit) -> unit
      val find_float : ?default:float -> string -> float
      val use_float : string -> (float -> unit) -> 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
    end
  val to_utf8 : string -> string
  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 :
    GSourceView2.source_buffer -> GText.tag -> int -> int -> unit
  val remove_tag :
    GSourceView2.source_buffer -> GText.tag -> int -> int -> unit
  val cleanup_tag : GSourceView2.source_buffer -> GText.tag -> unit
  val cleanup_all_tags : GSourceView2.source_buffer -> unit
  val make_formatter :
    ?flush:(unit -> unit) -> #GText.buffer -> Format.formatter
  val channel_redirector : Unix.file_descr -> (string -> bool) -> unit
  val log_redirector : ?flush:(unit -> unit) -> (string -> unit) -> unit
  val redirect : Format.formatter -> #GText.buffer -> unit
  val spawn_command :
    ?timeout:int ->
    ?stdout:Buffer.t ->
    ?stderr:Buffer.t ->
    string -> string array -> (Unix.process_status -> unit) -> unit
  val gui_unlocked : bool Pervasives.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, Format.formatter, unit) Pervasives.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 later : (unit -> unit) -> unit
  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 -> string -> 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
  module Custom :
    sig
      type ('a, 'b) column =
          ?title:string -> 'b list -> ('-> 'b list) -> GTree.view_column
      class type virtual ['a] custom =
        object
          val id : int
          val obj : Gtk.tree_model_custom
          method as_model : Gtk.tree_model
          method coerce : GTree.model
          method connect : GTree.model_signals
          method virtual custom_decode_iter : '-> unit -> unit -> 'a
          method virtual custom_encode_iter : '-> 'a * unit * unit
          method custom_flags : GtkEnums.tree_model_flags list
          method custom_get_column_type : int -> Gobject.g_type
          method virtual custom_get_iter : Gtk.tree_path -> 'a option
          method virtual custom_get_path : '-> Gtk.tree_path
          method custom_get_value : '-> int -> Gobject.g_value -> unit
          method virtual custom_iter_children : 'a option -> 'a option
          method virtual custom_iter_has_child : '-> bool
          method virtual custom_iter_n_children : 'a option -> int
          method virtual custom_iter_next : '-> 'a option
          method virtual custom_iter_nth_child :
            'a option -> int -> 'a option
          method virtual custom_iter_parent : '-> 'a option
          method custom_n_columns : int
          method custom_ref_node : '-> unit
          method custom_row_changed : Gtk.tree_path -> '-> unit
          method custom_row_deleted : Gtk.tree_path -> unit
          method custom_row_has_child_toggled : Gtk.tree_path -> '-> unit
          method custom_row_inserted : Gtk.tree_path -> '-> unit
          method custom_rows_reordered :
            Gtk.tree_path -> 'a option -> int array -> unit
          method custom_unref_node : '-> unit
          method virtual custom_value :
            Gobject.g_type -> '-> 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 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 reload : unit
          method row_changed : Gtk.tree_path -> Gtk.tree_iter -> unit
        end
      class type ['a] columns =
        object
          method add_column_empty : GTree.view_column
          method add_column_pixbuf :
            ('a, GTree.cell_properties_pixbuf) Gtk_helper.Custom.column
          method add_column_text :
            ('a, GTree.cell_properties_text) Gtk_helper.Custom.column
          method add_column_toggle :
            ('a, GTree.cell_properties_toggle) Gtk_helper.Custom.column
          method coerce : GObj.widget
          method count_selected : int
          method insert_row : '-> unit
          method is_selected : '-> bool
          method iter_selected : ('-> unit) -> unit
          method on_click : ('-> GTree.view_column -> unit) -> unit
          method on_double_click : ('-> GTree.view_column -> unit) -> unit
          method on_right_click : ('-> GTree.view_column -> unit) -> unit
          method on_selection : (unit -> unit) -> unit
          method pack : (GObj.widget -> unit) -> unit
          method reload : unit
          method scroll : GBin.scrolled_window
          method set_focus : '-> GTree.view_column -> unit
          method set_selection_mode : Gtk.Tags.selection_mode -> unit
          method update_all : unit
          method update_row : '-> unit
          method view : GTree.view
        end
      module List :
        sig
          class type ['a] model =
            object
              method get : int -> 'a
              method index : '-> int
              method reload : unit
              method size : int
            end
          class ['a] view :
            ?packing:(GObj.widget -> unit) ->
            ?width:int ->
            ?height:int ->
            ?headers:bool ->
            ?rules:bool ->
            'Gtk_helper.Custom.List.model ->
            object
              method add_column_empty : GTree.view_column
              method add_column_pixbuf :
                ('a, GTree.cell_properties_pixbuf) column
              method add_column_text :
                ('a, GTree.cell_properties_text) column
              method add_column_toggle :
                ('a, GTree.cell_properties_toggle) column
              method coerce : GObj.widget
              method count_selected : int
              method insert_row : '-> unit
              method is_selected : '-> bool
              method iter_selected : ('-> unit) -> unit
              method on_click : ('-> GTree.view_column -> unit) -> unit
              method on_double_click :
                ('-> GTree.view_column -> unit) -> unit
              method on_right_click :
                ('-> GTree.view_column -> unit) -> unit
              method on_selection : (unit -> unit) -> unit
              method pack : (GObj.widget -> unit) -> unit
              method reload : unit
              method scroll : GBin.scrolled_window
              method set_focus : '-> GTree.view_column -> unit
              method set_selection_mode : Gtk.Tags.selection_mode -> unit
              method update_all : unit
              method update_row : '-> unit
              method view : GTree.view
            end
        end
      module Tree :
        sig
          class type ['a] model =
            object
              method child_at : 'a option -> int -> 'a
              method children : 'a option -> int
              method has_child : '-> bool
              method index : '-> int
              method parent : '-> 'a option
              method reload : unit
            end
          class ['a] view :
            ?packing:(GObj.widget -> unit) ->
            ?width:int ->
            ?height:int ->
            ?headers:bool ->
            ?rules:bool ->
            'Gtk_helper.Custom.Tree.model ->
            object
              method add_column_empty : GTree.view_column
              method add_column_pixbuf :
                ('a, GTree.cell_properties_pixbuf) column
              method add_column_text :
                ('a, GTree.cell_properties_text) column
              method add_column_toggle :
                ('a, GTree.cell_properties_toggle) column
              method coerce : GObj.widget
              method count_selected : int
              method insert_row : '-> unit
              method is_selected : '-> bool
              method iter_selected : ('-> unit) -> unit
              method on_click : ('-> GTree.view_column -> unit) -> unit
              method on_double_click :
                ('-> GTree.view_column -> unit) -> unit
              method on_right_click :
                ('-> GTree.view_column -> unit) -> unit
              method on_selection : (unit -> unit) -> unit
              method pack : (GObj.widget -> unit) -> unit
              method reload : unit
              method scroll : GBin.scrolled_window
              method set_focus : '-> GTree.view_column -> unit
              method set_selection_mode : Gtk.Tags.selection_mode -> unit
              method update_all : unit
              method update_row : '-> unit
              method view : GTree.view
            end
        end
    end
  val graph_window :
    parent:GWindow.window ->
    title:string ->
    (packing:(GObj.widget -> unit) ->
     unit -> < adapt_zoom : unit -> unit; .. >) ->
    unit
  val graph_window_through_dot :
    parent:GWindow.window ->
    title:string -> (Format.formatter -> unit) -> unit
end