method private _cb__ty_changed = fun (item : GList.list_item) ->
let ty = SQL_ty.kind_of_string glade#ty_combo#entry#text in
begin
let do_dispsize = SQL_ty.kind_uses_display_width ty in
glade#dispsize_check#misc#set_sensitive (do_dispsize = Maybe);
if do_dispsize = No then
glade#dispsize_check#set_active false
else if do_dispsize = Yes then
glade#dispsize_check#set_active true
end;
begin
let do_prec = SQL_ty.kind_uses_precision ty in
glade#prec_check#misc#set_sensitive (do_prec = Maybe);
if do_prec = No then
glade#prec_check#set_active false
else if do_prec = Yes then
glade#prec_check#set_active true
end;
begin
let options = SQL_ty.options_of_kind ty
and current_option = glade#other_opts_combo#entry#text in
glade#other_opts_combo#list#clear_items ~start:0 ~stop:(-1);
List.iter
(fun s -> glade#other_opts_combo#list#insert ~pos:(-1)
(GList.list_item ~label:s ()))
options;
if List.mem current_option options then
glade#other_opts_combo#entry#set_text current_option
else match options with
| [] -> glade#other_opts_combo#entry#set_text ""
| hd :: _ -> glade#other_opts_combo#entry#set_text hd
end