method private _cb__remove_opt_button_clicked = fun () ->
    let select_around = fun path ->
      let rec select_around = fun () ->
        if not (path_is_valid sopts_store path) then begin
          ignore(GTree.Path.prev path);
          if not (path_is_valid sopts_store path) then begin
            if GTree.Path.get_depth path > 1 then begin
              i_bool (GTree.Path.up path);
              i_bool (sopts_store#remove (sopts_store#get_iter path));
              select_around ()
            end
          end
        end
      in
        select_around ();
        if GTree.Path.get_depth path > 0 then
          sopts_view.sopt_view#selection#select_path path
    in
      match sopts_view.sopt_view#selection#get_selected_rows with
        | [path] ->
            let iter = sopts_store#get_iter path in
              i_bool (sopts_store#remove iter);
              select_around path
        | _ ->
            ()