예제 #1
0
    public void SelectGardenEntry(GardenArea area)
    {
        string type = "";

        if (area is Garden)
        {
            type = "garden";
        }
        else if (area is Planting)
        {
            type = "planting";
        }
        else
        {
            type = "method area";
        }

        if (area != null)
        {
            AreaDeleteButton.Label = "Delete " + type + " '" + area.Name + "'";
            ShowAreaSelectionInfo(area);
        }
        else
        {
            AreaDeleteButton.Label = "Delete";
            ShowEmptyAreaSelectionInfo();
        }
    }
예제 #2
0
 protected virtual void SetValues(GardenArea area)
 {
     area.Name        = this.NameEntry.Text;
     area.Description = this.DescrEntry.Text;
     area.SetCreated(CreatedDateBox.GetYear(), CreatedDateBox.GetMonth());
     area.SetRemoved(RemovedDateBox.GetYear(), RemovedDateBox.GetMonth());
 }
예제 #3
0
    public void ShowAreaSelectionInfo(GardenArea area)
    {
        if (area == null)
        {
            ShowEmptyAreaSelectionInfo();
            return;
        }

        AreaInfo.Buffer.Clear();

        AreaInfo.AddEntry(area.Name, AreaInfo.tag_headline);
        AreaInfo.AddEntry(area.Description, AreaInfo.tag_italic);
        AreaInfo.AddEntry("Created: " + area.created.Month + "/" + area.created.Year);
        AreaInfo.AddEntry("Removed: " + area.removed.Month + "/" + area.removed.Year);
        AreaInfo.AddEntry($"Size: {area.AreaSize() / 10000f}m²");

        if (area is Planting planting)
        {
            AreaInfo.AddEntry("Varieties:");
            foreach (KeyValuePair <VarietyKeySeq, PlantingInfo> pair in planting.Varieties)
            {
                VarietyKeySeq seq     = pair.Key;
                int           count   = pair.Value.Count;
                PlantVariety  variety = GardenData.LoadedData.GetVariety(seq);
                Plant         plant   = GardenData.LoadedData.GetPlant(seq.FamilyKey, seq.PlantKey);
                AreaInfo.AddEntry(variety.Name + " (" + plant.Name + "): " + count);
            }
        }
        AreaInfo.ApplyTags();
    }
예제 #4
0
        protected override void SetValues(GardenArea area)
        {
            Planting planting = area as Planting;

            planting.Varieties = this.Varieties;
            //TODO change planting info here
            base.SetValues(area);
        }
예제 #5
0
 protected void SetValuesForCreation(GardenArea area, List <Garden.GardenPoint> points)
 {
     area.Shape.AddPoints(points);
     area.Shape.FinishPoints();
     area.SetCreated(CreatedDateBox.GetYear(), CreatedDateBox.GetMonth());
     area.SetRemoved(RemovedDateBox.GetYear(), RemovedDateBox.GetMonth());
     GardenData.unsaved = true;
 }
예제 #6
0
        public void UndoSelection()
        {
            MainWindow win = MainWindow.GetInstance();

            SelectedArea = null;
            win.PlantAddButton.Sensitive = false;
            win.AreaEditButton.Sensitive = false;
            Draw();
            TooltipText = "";
            win.ShowEmptyAreaSelectionInfo();
        }
예제 #7
0
        /// <summary>
        /// Checks if an area of the garden was selected by clicking the edge of that area.
        /// </summary>
        /// <returns><c>true</c>, if click selection was made, <c>false</c> otherwise.</returns>
        /// <param name="x">The x coordinate.</param>
        /// <param name="y">The y coordinate.</param>
        private bool CheckAreaClick(int x, int y)
        {
            GardenPoint clicked = new GardenPoint(x, y);
            int         year    = MainWindow.GetInstance().GetYear();
            int         month   = MainWindow.GetInstance().GetMonth();

            if (Garden.CheckDate(year, month))
            {
                foreach (GardenArea area in Garden.MethodAreas.Values)
                {
                    if (area.CheckDate(year, month) && area.ContainsPointOnEdge(clicked, XOffset(), YOffset(), Zoom))
                    {
                        if (SelectedArea != null)
                        {
                            SelectedPoint = SelectedArea.GetPointInRange(clicked, 10, XOffset(), YOffset(), Zoom);
                        }
                        else
                        {
                            SelectedPoint = area.GetPointInRange(clicked, 10, XOffset(), YOffset(), Zoom);
                        }
                        SelectedArea = area;
                        return(true);
                    }
                }

                foreach (GardenArea area in Garden.Plantings.Values)
                {
                    if (area.CheckDate(year, month) && area.ContainsPointOnEdge(clicked, XOffset(), YOffset(), Zoom))
                    {
                        if (SelectedArea != null)
                        {
                            SelectedPoint = SelectedArea.GetPointInRange(clicked, 10, XOffset(), YOffset(), Zoom);
                        }
                        else
                        {
                            SelectedPoint = area.GetPointInRange(clicked, 10, XOffset(), YOffset(), Zoom);
                        }
                        SelectedArea = area;
                        return(true);
                    }
                }
            }

            if (Garden.ContainsPointOnEdge(clicked, XOffset(), YOffset(), Zoom))
            {
                SelectedArea  = Garden;
                SelectedPoint = Garden.GetPointInRange(clicked, 10, XOffset(), YOffset(), Zoom);
                return(true);
            }

            return(false);
        }
예제 #8
0
        public static void ShowGardenAreaEditDialog(GardenArea area)
        {
            string title = "Edit method area '" + area.Name + "'";

            if (area is Garden.Garden)
            {
                title = "Edit garden '" + area.Name + "'";
            }
            else if (area is Planting)
            {
                title = "Edit planting '" + area.Name + "'";
            }
            GardenAreaCreationDialog dialog = new GardenAreaCreationDialog(title);

            dialog.SetValuesForEdit(area);
        }
예제 #9
0
        protected void SetValuesForEdit(GardenArea area)
        {
            CreateButton.Label = "Save";
            NameEntry.Text     = area.Name;
            DescrEntry.Text    = area.Description;
            CreatedDateBox.SetDate(area.created);
            RemovedDateBox.SetDate(area.removed);

            CreateButton.Clicked += (object sender, System.EventArgs e) =>
            {
                this.SetValues(area);
                GardenDrawingArea.ActiveInstance.MakeSelection();
                GardenDrawingArea.ActiveInstance?.Draw();
                MainWindow.GetInstance().ShowAreaSelectionInfo(area);
                this.Destroy();
                GardenData.unsaved = true;
            };
        }
예제 #10
0
        public static GardenData TestData()
        {
            GardenData Data = new GardenData("testdata");

            var zwiebelgewaechse = new PlantFamily("Zwiebelgewaechse", "");

            Data.AddFamily("zwiebelgewaechse", zwiebelgewaechse);
            var knoblauch = new Plant("Knoblauch", "");

            knoblauch.FeederType     = FeederType.Medium;
            knoblauch.ScientificName = "allium sativum";
            zwiebelgewaechse.AddPlant("knoblauch", knoblauch);
            var morado = new PlantVariety("Morado", "rotviolett, aus Spanien, geeignet für Herbstpflanzung, bildet Brutzwiebeln");

            morado.SetColor(new Cairo.Color(0.9, 0.9, 0.9));
            knoblauch.AddVariety("morado", morado);
            var vallelado = new PlantVariety("Vallelado", "bla");

            vallelado.SetColor(new Cairo.Color(0.9, 0.9, 0.9));
            knoblauch.AddVariety("vallelado", vallelado);

            var nachtschattengew = new PlantFamily("Nachtschattengewächse", "");

            Data.AddFamily("nachtschattengewaechse", nachtschattengew);
            var kartoffeln = new Plant("Kartoffel", "");

            kartoffeln.SetColor(new Cairo.Color(0.2, 0.8, 0.8));
            nachtschattengew.AddPlant("kartoffel", kartoffeln);

            var bed1 = new Garden.Garden("Omas Garten", "Alte Garten von Oma", 2000, 1, 2000, 1);
            var bed2 = new Garden.Garden("Hauptstraßengarten", "Alte Garten von Oma", 2000, 1, 2000, 1);

            Data.AddGarden("oma_garten", bed1);
            Data.AddGarden("hptstr_garten", bed2);
            bed1.Shape.AddPoint(new GardenPoint(0, 0));
            bed1.Shape.AddPoint(new GardenPoint(0, 200));
            bed1.Shape.AddPoint(new GardenPoint(300, 200));
            bed1.Shape.AddPoint(new GardenPoint(300, 0));
            bed1.Shape.FinishPoints();
            var compostArea = new GardenArea("Kompost", "hier wurde Kompost angewendet", 2000, 1, 2010, 6);

            compostArea.Shape.AddPoint(new GardenPoint(100, 100));
            compostArea.Shape.AddPoint(new GardenPoint(300, 100));
            compostArea.Shape.AddPoint(new GardenPoint(300, 200));
            compostArea.Shape.AddPoint(new GardenPoint(100, 200));
            compostArea.Shape.FinishPoints();
            bed1.AddMethodArea("compost", compostArea);
            var plantingArea = new Planting("Planting", "hier wurde was gepflanzt", 2000, 1, 2010, 6);

            plantingArea.Shape.AddPoint(new GardenPoint(400, 400));
            plantingArea.Shape.AddPoint(new GardenPoint(500, 400));
            plantingArea.Shape.AddPoint(new GardenPoint(500, 500));
            plantingArea.Shape.AddPoint(new GardenPoint(400, 500));
            plantingArea.Shape.FinishPoints();
            bed1.AddPlanting("planting", plantingArea);
            plantingArea.AddVariety(morado, new PlantingInfo()
            {
                Count = 3
            });
            plantingArea.AddVariety(vallelado, new PlantingInfo()
            {
                Count = 2
            });

            //string s = Newtonsoft.Json.JsonConvert.SerializeObject(Data, Newtonsoft.Json.Formatting.Indented);

            return(Data);
        }