method create_view = fun ?(view = GTree.view ()) () ->
    let result = {
      idx_view = view;
      idx_name =
        GTree.view_column ~title:"Name"
          ~renderer:(GTree.cell_renderer_text [], [("text", c_name)])
          ();
      idx_unique =
        GTree.view_column ~title:"Unique ?"
          ~renderer:(GTree.cell_renderer_text [], [("text", c_unique)])
          ();
      idx_table =
        GTree.view_column ~title:"Index on table"
          ~renderer:(GTree.cell_renderer_text [], [("text", c_table)])
          ();
      idx_descr =
        GTree.view_column ~title:"Index description"
          ~renderer:(GTree.cell_renderer_text [], [("text", c_descr)])
          ();
    } in
      List.iter
        (fun v -> v#set_resizable true; i_int (view#append_column v))
        [result.idx_name; result.idx_unique;
         result.idx_table; result.idx_descr];
      view#set_model (Some self#coerce);
      result