コード例 #1
0
        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;
                        }
                    }
                }
            }
        }