method private _cb__remove_column = fun () ->
match self#_get_selection with
| Some ((_, table), Some (path, column)) ->
let vtables = SQL_db.vtables_using_column column
and indexes = SQL_db.indexes_using_column column 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_column column
and iter = current_column_model#get_iter path in
i_bool (current_column_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
| _ -> ()