method create_view = fun ?(view = GTree.view ()) () ->
    let name_column =
      GTree.view_column ~title:"Name"
        ~renderer:(GTree.cell_renderer_text [], [("text", c_string)])
        ()
    and pkey_column =
      GTree.view_column ~title:"Primary key"
        ~renderer:(GTree.cell_renderer_text [], [("text", c_pkey)])
        ()
    in
      List.iter
        (fun c ->
           c#set_resizable true;
           i_int (view#append_column c))
        [name_column; pkey_column];
      view#set_model (Some self#coerce);
      { tv_view = view;
        tv_name = name_column;
        tv_pkey = pkey_column; }