Exemple #1
0
        public FamilyTreeView(GardenData gardenData)
        {
            AddColumn("Family/Plant/Variety");

            TreeStore treeStore = new TreeStore(typeof(Garden.GardenDataEntry));

            foreach (Garden.PlantFamily family in gardenData.Families.Values)
            {
                TreeIter familyIter = treeStore.AppendValues(family);
                foreach (Garden.Plant plant in family.Plants.Values)
                {
                    TreeIter plantIter = treeStore.AppendValues(familyIter, plant);
                    foreach (Garden.PlantVariety variety in plant.Varieties.Values)
                    {
                        TreeIter varietyIter = treeStore.AppendValues(plantIter, variety);
                    }
                    treeStore.AppendValues(plantIter, new NewVarietyEntry(plant));
                }
                treeStore.AppendValues(familyIter, new NewPlantEntry(family));
            }
            treeStore.AppendValues(new NewFamilyEntry());

            treeView.Model = treeStore;

            treeView.Selection.Changed += (object sender, EventArgs e) =>
            {
                //System.Console.WriteLine("selected " + GetSelected().Name);
                GardenDataEntry selected = GetSelected();
                if (selected is NewFamilyEntry)
                {
                    NewFamily?.Invoke();
                }
                else if (selected is NewPlantEntry npe)
                {
                    NewPlant?.Invoke(npe.Family);
                }
                else if (selected is NewVarietyEntry nve)
                {
                    NewVariety?.Invoke(nve.Plant);
                }
                else
                {
                    SelectedGardenDataEntry?.Invoke(GetSelected());
                }
            };

            Add(treeView);
        }
    private void SelectPlantEntry(GardenDataEntry entry)
    {
        if (entry == null)
        {
            SelectPlantEntry();
            return;
        }

        string type = "";

        if (entry is PlantFamily)
        {
            type = "family";
            PlantAddButton.Sensitive = false;
            PlantAddButton.Label     = "";
        }
        if (entry is Plant)
        {
            type = "plant";
            PlantAddButton.Sensitive = false;
            PlantAddButton.Label     = "";
        }
        if (entry is PlantVariety)
        {
            type = "variety";
            PlantAddButton.Sensitive = GardenDrawingArea.ActiveInstance?.SelectedArea is Planting;
            PlantAddButton.Label     = "Add " + type + " '" + entry.Name + "' to planting";
        }

        PlantEditButton.Label     = "Edit " + type + " '" + entry.Name + "'";
        PlantInfoButton.Label     = "Info for " + type + " '" + entry.Name + "'";
        PlantEditButton.Sensitive = true;
        PlantInfoButton.Sensitive = true;

        SelectedEntry = entry;
    }