private void OnNormalPackageToggled(object sender, Gtk.ToggledArgs args) { Gtk.TreeIter iter; bool old = true; string name; string version; if (normalPackageListStore.GetIter(out iter, new Gtk.TreePath(args.Path))) { old = (bool)normalPackageListStore.GetValue(iter, NormalPackageToggleID); normalPackageListStore.SetValue(iter, NormalPackageToggleID, !old); } name = (string)normalPackageListStore.GetValue(iter, NormalPackageNameID); version = (string)normalPackageListStore.GetValue(iter, NormalPackageVersionID); if (old == false) { selectedPackageListStore.AppendValues(name, version); foreach (ProjectPackage package in packages) { if (package.Name == name /* && package.Version == version */) { selectedPackages.Add(package); break; } } } else { Gtk.TreeIter search_iter; bool has_elem = selectedPackageListStore.GetIterFirst(out search_iter); if (has_elem) { while (true) { string current = (string)selectedPackageListStore.GetValue(search_iter, SelectedPackageNameID); if (current.Equals(name)) { selectedPackageListStore.Remove(ref search_iter); foreach (ProjectPackage p in selectedPackages) { if (p.Name == name) { selectedPackages.Remove(p); break; } } break; } if (!selectedPackageListStore.IterNext(ref search_iter)) { break; } } } } }