예제 #1
0
        protected void OnBtnAddRowClicked(object sender, EventArgs e)
        {
            TreeIter?iter = GetSelectedRow();
            TreeIter node;

            if (!iter.HasValue)
            {
                return;
            }
            else
            {
                //Pokud byl vracen TreeIter, přiřadí se jeho hodnota
                node = iter.Value;
                if (foodTreeStore.GetValue(node, 2) != null)
                {
                    return;
                }
                //Zobrazí se dialog na nové jídlo
                var dlg = new AddFoodDialog();

                if (dlg.Run() == (int)ResponseType.Ok)
                {
                    //Jídlo se vytvoří i jako třída Food a přidá se do listu a zobrazí se na treeview
                    Food fd = new Food();
                    fd.SetValues(dlg.Values);
                    var alg = this.server.database.Allergenes.AsEnumerable();
                    fd.SetAllergenes(alg.GetAllergenes(dlg.Allergenes));
                    food.Add(fd);
                    foodTreeStore.AppendValues(node, dlg.Values.ToArray().SubArray(1, 5));
                    treeview.ShowAll();
                }
                dlg.Destroy();
                dlg.Dispose();
            }
        }
예제 #2
0
 //Přídání eventu na kliknutí řádku v treeview
 private void appendEventHandlers()
 {
     this.treeview.RowActivated += (sender, e) =>
     {
         //Třída TreeIter je důležitá pro upravení hodnot řádku
         Gtk.TreeIter iterator;
         //Získa TreeIter z cesty řádku, na který bylo kliknuto
         foodTreeStore.GetIterFromString(out iterator, e.Path.ToString());
         //Kontola, jestli řádek na který bylo kliknuto je řádek, který se může upravovat, což jsou jen řádky s jídlem
         if (foodTreeStore.GetValue(iterator, 2) != null)
         {
             //Název jídla
             string label = foodTreeStore.GetValue(iterator, 0).ToString();
             //Najde index v listu jídla a podle toho je třída předána do dialogu, který přídává nebo upraví jídlo
             int result = food.FindFoodIndex(label);
             var dlg    = new AddFoodDialog(food[result]);
             //dlg.SetAllergenes(food[result].GetAllergenIds());
             if (dlg.Run() == (int)ResponseType.Ok)
             {
                 //Upraví data
                 foodTreeStore.SetValues(iterator, dlg.Values.ToArray().SubArray(1, 5));
                 food[result].SetValues(dlg.Values.ToArray());
                 //Clear all relations with allergens
                 food[result].Allergen.Clear();
                 //aId = allergen Id
                 foreach (int aId in dlg.Allergenes)
                 {
                     //Pole alergenů jsou ve výchozí hodnotě 0, opět aby se dali kontrolovat
                     if (aId == 0)
                     {
                         continue;
                     }
                     //Vezme se alergen přímo z databáze, aby se nevytvářel v DB nový záznam, ale aby vznikla vazba
                     var allergen = (from a in this.server.database.Allergenes.ToList() where a.Id == aId select a).First();
                     food[result].SetAllergen(allergen);
                 }
             }
         }
     };
 }