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