method private _remove_table_internal = fun path ->
    let iter = table_model#get_iter path in
    let table_data = table_model#get_data ~row:iter in
    let vtables = SQL_db.vtables_using_table table_data.td_table
    and indexes = SQL_db.indexes_using_table table_data.td_table in
    let vtables = List.map (fun vt -> C_VTable vt) vtables
    and indexes = List.map (fun i  -> C_Index i) indexes
    in
    let do_remove =
      if vtables = [] && indexes = [] then
        true
      else
        let dialog = new remove_dialog_box () in
          dialog#set_components (vtables @ indexes);
          let r = dialog#run () in
            dialog#destroy ();
            r = `YES
    in
      if do_remove then begin
        self#_document_changed ();
        (* FIXME: Unref model ??? *)
        let (vtables, indexes) = SQL_db.unlink_table table_data.td_table in
          i_bool (table_model#remove iter);
          List.iter
            (fun vt ->
               self#_remove_vtable_from_store vt.SQL_db.vt_name)
            vtables;
          List.iter
            (fun idx ->
               self#_remove_index_from_store idx.SQL_db.idx_name)
            indexes
      end