sig
  type ressource_kind = [ `Dir | `File | `None ]
  type ressource_name = string
  type view_name = string
  class type view =
    object
      method changed : bool
      method close : bool
      method name : Cam_plug.View.view_name
      method refresh : unit
      method ressource : Cam_plug.View.ressource_name
      method ressource_kind : Cam_plug.View.ressource_kind
    end
  class type view_factory =
    object
      method create :
        Cam_plug.View.ressource_name ->
        string array -> Cam_plug.View.view * GWindow.window
      method create_no_window :
        GWindow.window ->
        Cam_plug.View.ressource_name ->
        string array -> Cam_plug.View.view * GObj.widget
      method known_ressource_kinds : Cam_plug.View.ressource_kind list
      method name : Cam_plug.View.view_name
    end
  val register_factory : Cam_plug.View.view_factory -> unit
  val open_ressource :
    Cam_plug.View.ressource_name ->
    Cam_plug.View.view_name -> string array -> Cam_plug.View.view
  val open_ressource_no_window :
    Cam_plug.View.ressource_name ->
    Cam_plug.View.view_name ->
    string array ->
    GWindow.window -> (GObj.widget -> unit) -> Cam_plug.View.view
  val refresh_ressource_views : Cam_plug.View.ressource_name -> unit
  val close_ressource_views : Cam_plug.View.ressource_name -> unit
  val available_views :
    ?kind:Cam_plug.View.ressource_kind ->
    unit -> Cam_plug.View.view_name list
  class view_window :
    ?allow_shrink:bool ->
    ?width:int ->
    ?height:int ->
    title:string ->
    Cam_plug.View.view ->
    object method vbox : GPack.box method window : GWindow.window end
  val create_view_window :
    ?width:int ->
    ?height:int ->
    title:string -> Cam_plug.View.view -> Cam_plug.View.view_window
end