method edit_selected f_edit =
      let sorted_select = List.sort compare list_select in
      match sorted_select with
        [] -> ()
      |        n :: _ ->
          try
            let ele = List.nth !listref n in
            let ele2 = f_edit ele in
            let rec iter m = function
                [] -> []
              |        e :: q ->
                  if n = m then
                    ele2 :: q
                  else
                    e :: (iter (m+1) q)
            in
            self#update (iter 0 !listref);
            wlist#select n 0
          with
            Not_found ->
              ()