Пример #1
0
        //'UserEntersFlagsEnum' -> [ ] [x] [x] [ ] [x] [ ] (words with checkbox infront of the word)
        protected Enum UserEntersFlagsEnum(Item item, T target)
        {
            Enum      originalEnum = GetEnum <Enum>(item, target);
            EnumFlags flags        = new EnumFlags(originalEnum);

            int index = 0;
            int zero  = -1;

            for (int i = 0; i < flags.NumValues; ++i)
            {
                if (flags.IsZero(i))
                {
                    zero = i;
                    break;
                }
            }
            ConsoleKeyInfo key;

            do
            {
                Thread.Sleep(conf.DelayMilliSeconds);
                RenderList4(flags, index, zero);

                key = Console.ReadKey();
                if (key.Key == ConsoleKey.UpArrow || key.Key == ConsoleKey.PageUp || key.Key == ConsoleKey.LeftArrow)
                {
                    index = (index == 0) ? flags.NumValues - 1 : index - 1;
                }
                else
                if (key.Key == ConsoleKey.DownArrow || key.Key == ConsoleKey.PageDown || key.Key == ConsoleKey.RightArrow)
                {
                    index = (index == flags.NumValues - 1) ? 0 : index + 1;
                }
                else
                if (key.Key == ConsoleKey.Enter || key.Key == ConsoleKey.Spacebar)
                {
                    if (index == zero)
                    {
                        if (flags.HasAnySet(true))
                        {
                            flags.SetAllFlags(false);
                        }
                        else
                        {
                            flags.SetAllFlags(true);
                        }
                    }
                    else
                    {
                        flags.SetFlag(index, !flags.GetFlag(index));
                    }
                }
                else
                if (key.Key == ConsoleKey.Escape)
                {
                    return(flags.Create());
                }
            }while (true);
        }