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 ();
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