Пример #1
0
        // Promjenjena vjerojatnost nekog simbola
        void Changed(Dial sender)
        {
            if (!Params.Children.Contains(sender))
            {
                return;
            }

            // Kolika bi trebala biti vrijednost posljednje vjerojatnosti?
            int next = 100 - Params.Children.OfType <Dial>().Aggregate(0, (a, i) => a + (int)i.RawValue) + (int)Last.RawValue;

            if (next < 1)                                                  // Ako je 0 ili manje, prelazimo preko 100%
            {
                Dispatcher.InvokeAsync(() => sender.RawValue += next - 1); // Vrati vrijednost simbola na maksimalnu dozvoljenu
            }
            else
            {
                Last.RawValue = next;   // Prilagodi posljednju vjerojatnost
            }
        }
Пример #2
0
        // Brisanje nekog simbola
        void Removed(object sender, RoutedEventArgs e)
        {
            if (Params.Children.Count <= 2)
            {
                return;                              // Aritmetički kod nema smisla za samo jedan simbol
            }
            Dial removing = (Dial)((ContextMenu)FindResource("Remove")).PlacementTarget;

            removing.Changed -= Changed;
            Last.RawValue    += removing.RawValue;

            // Namjesti nazive simbola
            for (int i = Params.Children.IndexOf(removing) + 1; i < Params.Children.Count; i++)
            {
                ((Dial)Params.Children[i]).Title = ArithmeticCode.PName(i - 1).ToString();
            }

            Params.Children.Remove(removing);

            CanExecute();
        }
Пример #3
0
        // Dodavanje novog simbola
        void Added()
        {
            if (Last.RawValue < 2 || Params.Children.Count >= 26)
            {
                return;                                                    // Do 26 slova, moguće proširiti uz bolje imenovanje
            }
            Dial param = new Dial();

            param.RawValue = Last.RawValue / 2;
            Last.RawValue -= param.RawValue;

            param.Changed    += Changed;
            param.ContextMenu = (ContextMenu)FindResource("Remove");

            int i = Params.Children.Count - 1;

            param.Title = ArithmeticCode.PName(i).ToString();     // Nazivi simbola
            Last.Title  = ArithmeticCode.PName(i + 1).ToString();

            Params.Children.Insert(i, param);

            CanExecute();
        }