method private _cb__remove_column = fun () -> (* FIXME: use an internal function ? *)
    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
      | _ -> ()