private void RatingCellEdited(object o, EditedArgs args) { TreeIter iter; treeview1.Model.GetIter(out iter, new TreePath(args.Path)); Movie movie = (Movie)treeview1.Model.GetValue(iter, 0); string input = args.NewText.Trim(); if (input == string.Empty) { Console.Error.WriteLine("Remove rating."); if (ratings.Remove(movie.ID)) { rating_predictor.RemoveRating(current_user_id, movie.ID); } PredictAllRatings(); return; } input = input.Replace(',', '.'); // also allow "German" floating point numbers try { double rating = double.Parse(input, CultureInfo.InvariantCulture); if (rating > rating_predictor.MaxRating) { rating = rating_predictor.MaxRating; } if (rating < rating_predictor.MinRating) { rating = rating_predictor.MinRating; } // if rating already exists, remove it first if (ratings.ContainsKey(movie.ID)) { rating_predictor.RemoveRating(current_user_id, movie.ID); } // add the new rating rating_predictor.AddRating(current_user_id, movie.ID, rating); ratings[movie.ID] = rating; // recompute ratings PredictAllRatings(); } catch (FormatException) { Console.Error.WriteLine("Could not parse input '{0}' as a number.", input); } }