sig
  val cast : 'Gobject.obj -> Gtk.file_chooser Gobject.obj
  module P :
    sig
      val action :
        ([> `filechooser ], GtkEnums.file_chooser_action) Gobject.property
      val extra_widget :
        ([> `filechooser ], Gtk.widget Gobject.obj) Gobject.property
      val file_system_backend : ([> `filechooser ], string) Gobject.property
      val filter :
        ([> `filechooser ], Gtk.file_filter Gtk.obj) Gobject.property
      val local_only : ([> `filechooser ], bool) Gobject.property
      val preview_widget :
        ([> `filechooser ], Gtk.widget Gobject.obj) Gobject.property
      val preview_widget_active : ([> `filechooser ], bool) Gobject.property
      val select_multiple : ([> `filechooser ], bool) Gobject.property
      val show_hidden : ([> `filechooser ], bool) Gobject.property
      val use_preview_label : ([> `filechooser ], bool) Gobject.property
      val do_overwrite_confirmation :
        ([> `filechooser ], bool) Gobject.property
    end
  module S :
    sig
      val current_folder_changed :
        ([> `filechooser ], unit -> unit) GtkSignal.t
      val file_activated : ([> `filechooser ], unit -> unit) GtkSignal.t
      val selection_changed : ([> `filechooser ], unit -> unit) GtkSignal.t
      val update_preview : ([> `filechooser ], unit -> unit) GtkSignal.t
      val confirm_overwrite :
        ([> `filechooser ], unit -> GtkEnums.file_chooser_confirmation)
        GtkSignal.t
    end
  type error = ERROR_NONEXISTENT | ERROR_BAD_FILENAME
  exception Error of GtkFile.FileChooser.error * string
  external set_current_name : [> Gtk.file_chooser ] Gtk.obj -> string -> unit
    = "ml_gtk_file_chooser_set_current_name"
  external get_filename : [> Gtk.file_chooser ] Gtk.obj -> string option
    = "ml_gtk_file_chooser_get_filename"
  external set_filename : [> Gtk.file_chooser ] Gtk.obj -> string -> bool
    = "ml_gtk_file_chooser_set_filename"
  external select_filename : [> Gtk.file_chooser ] Gtk.obj -> string -> bool
    = "ml_gtk_file_chooser_select_filename"
  external unselect_filename :
    [> Gtk.file_chooser ] Gtk.obj -> string -> unit
    = "ml_gtk_file_chooser_unselect_filename"
  external select_all : [> Gtk.file_chooser ] Gtk.obj -> unit
    = "ml_gtk_file_chooser_select_all"
  external unselect_all : [> Gtk.file_chooser ] Gtk.obj -> unit
    = "ml_gtk_file_chooser_unselect_all"
  external get_filenames : [> Gtk.file_chooser ] Gtk.obj -> string list
    = "ml_gtk_file_chooser_get_filenames"
  external get_current_folder :
    [> Gtk.file_chooser ] Gtk.obj -> string option
    = "ml_gtk_file_chooser_get_current_folder"
  external set_current_folder :
    [> Gtk.file_chooser ] Gtk.obj -> string -> bool
    = "ml_gtk_file_chooser_set_current_folder"
  external get_uri : [> Gtk.file_chooser ] Gtk.obj -> string option
    = "ml_gtk_file_chooser_get_uri"
  external set_uri : [> Gtk.file_chooser ] Gtk.obj -> string -> bool
    = "ml_gtk_file_chooser_set_uri"
  external select_uri : [> Gtk.file_chooser ] Gtk.obj -> string -> bool
    = "ml_gtk_file_chooser_select_uri"
  external unselect_uri : [> Gtk.file_chooser ] Gtk.obj -> string -> unit
    = "ml_gtk_file_chooser_unselect_uri"
  external get_uris : [> Gtk.file_chooser ] Gtk.obj -> string list
    = "ml_gtk_file_chooser_get_uris"
  external get_current_folder_uri : [> Gtk.file_chooser ] Gtk.obj -> string
    = "ml_gtk_file_chooser_get_current_folder_uri"
  external set_current_folder_uri :
    [> Gtk.file_chooser ] Gtk.obj -> string -> bool
    = "ml_gtk_file_chooser_set_current_folder_uri"
  external get_preview_filename :
    [> Gtk.file_chooser ] Gtk.obj -> string option
    = "ml_gtk_file_chooser_get_preview_filename"
  external get_preview_uri : [> Gtk.file_chooser ] Gtk.obj -> string option
    = "ml_gtk_file_chooser_get_preview_uri"
  external add_filter :
    [> Gtk.file_chooser ] Gtk.obj -> Gtk.file_filter Gtk.obj -> unit
    = "ml_gtk_file_chooser_add_filter"
  external remove_filter :
    [> Gtk.file_chooser ] Gtk.obj -> Gtk.file_filter Gtk.obj -> unit
    = "ml_gtk_file_chooser_remove_filter"
  external list_filters :
    [> Gtk.file_chooser ] Gtk.obj -> Gtk.file_filter Gtk.obj list
    = "ml_gtk_file_chooser_list_filters"
  external add_shortcut_folder :
    [> Gtk.file_chooser ] Gtk.obj -> string -> unit
    = "ml_gtk_file_chooser_add_shortcut_folder"
  external remove_shortcut_folder :
    [> Gtk.file_chooser ] Gtk.obj -> string -> unit
    = "ml_gtk_file_chooser_remove_shortcut_folder"
  external list_shortcut_folders :
    [> Gtk.file_chooser ] Gtk.obj -> string list
    = "ml_gtk_file_chooser_list_shortcut_folders"
  external add_shortcut_folder_uri :
    [> Gtk.file_chooser ] Gtk.obj -> string -> unit
    = "ml_gtk_file_chooser_add_shortcut_folder_uri"
  external remove_shortcut_folder_uri :
    [> Gtk.file_chooser ] Gtk.obj -> string -> unit
    = "ml_gtk_file_chooser_remove_shortcut_folder_uri"
  external list_shortcut_folder_uris :
    [> Gtk.file_chooser ] Gtk.obj -> string list
    = "ml_gtk_file_chooser_list_shortcut_folder_uris"
  val dialog_create :
    [ `bin | `container | `dialog | `filechooser | `gtk | `widget | `window ]
    Gobject.param list ->
    [ `bin | `container | `dialog | `filechooser | `gtk | `widget | `window ]
    Gtk.obj
  val widget_create :
    [ `filechooser | `gtk | `widget ] Gobject.param list ->
    [ `filechooser | `gtk | `widget ] Gtk.obj
end