Exemplo n.º 1
0
        protected ConsoleExtensionCore(string rootMenuLabel, string programHeader)
        {
            this._rootMenu   = new Menu(rootMenuLabel, true);
            this._quitOption = CreateQuitOption();
            this._rootMenu.AddOptions(this._quitOption);
            SetProgramHeader();
            this.Initialize();
            this._rootMenu.InvokeAsRootMenu();

            IMenuOption <IMenuFunc> CreateQuitOption()
            {
                var quitMenu = this.CreateYesOrNoMenu(
                    "Do you want to quit?",
                    () => { },
                    () => { },
                    PostInvokeCommand.ExitRootMenu
                    );

                return(this.CreateMenuFuncOption(MenuOptionKey.Q, "Quit", quitMenu.Invoke));
            }

            void SetProgramHeader()
            {
                Print.Settings.ProgramName = programHeader
                                             .If().Null.Throw().Null(nameof(programHeader))
                                             .If().Empty.Throw().Argument(nameof(programHeader));

                MenuOptionKeyService.ProgramHeaderPrinter = () => Print.Header(programHeader);
            }
        }
Exemplo n.º 2
0
        private static void MainMenu()
        {
            IMenuOption[] menuOptions = new IMenuOption[]
            {
                new RunPresetOption(),
                new CollectionCreationOption(),
                new OutputListOption()
            };

            do
            {
                Console.ForegroundColor = ConsoleColor.Yellow;
                Console.WriteLine($"{currentGame.Name} Encount Music Editor");
                Console.ResetColor();

                for (int i = 0, total = menuOptions.Length; i < total; i++)
                {
                    Console.WriteLine($"{i + 1}. {menuOptions[i].Name}");
                }
                Console.WriteLine("0. Exit");

                int choice = ConsolePrompt.PromptInt("Choice");

                if (choice == 0)
                {
                    return;
                }
                else if (choice - 1 < menuOptions.Length)
                {
                    menuOptions[choice - 1].Run(currentGame);
                }
            }while (true);
        }
Exemplo n.º 3
0
 public DecisionOnFurtherCourseOfProgram(IMenuOption Option,
                                         IFakeConsole DummyConsole,
                                         IMenuOption Exit)
 {
     this.Option       = Option;
     this.DummyConsole = DummyConsole;
     ExitFromProgram   = Exit;
 }
Exemplo n.º 4
0
        static void Main(string[] args)
        {
            #region menu testing code

            /*var o = new IMenuOption[5]
             * {
             *  new SliderOption("players", 2, 8, 1, 0, 4),
             *  new OnOffOption("auto-health", false),
             *  new EnumOption("gamemode", 0, "auto-all", "auto-turns", "manual-turns", "manual-all"),
             *  new OnOffOption("hotkeys", true),
             *  new SliderOption("graphics factor", 0, 5, 0.5, 1, 0)
             * };
             *
             * var m = new Menu("D&D ENGINE: Settings 1", o, ConsoleTools.style12, ConsoleColor.DarkYellow, ConsoleColor.Yellow,
             *  ConsoleColor.Blue, new Vector2(4, 5), 5);
             *
             * m.Initialize();
             * m.Run();*/
            #endregion

            var f = new Form("TEST_FORM", 20, 2, new Vector2(0, 0), "length7", "size5", "magnitude11", "expanse8");

            //f.Initialize();
            //f.Run();

            var o = new IMenuOption[5]
            {
                new SliderOption("TEST_SLIDER", 0, 10, 1, 0, 5),
                new OnOffOption("TEST_ON_OFF", false),
                new EnumOption("TEST_ENUM", 0, "TEST1", "TEST2", "TEST3", "TEST4"),
                new SliderOption("PLACING_TEST", 0.350, 1.650, 0.050, 3, 0.800),
                new EnumOption("ABCDEF", 3, "A", "B", "C", "D", "E", "F")
            };

            var m = new Menu("TEST_MENU", o, ConsoleTools.style12, ConsoleColor.DarkBlue, ConsoleColor.Blue,
                             ConsoleColor.Yellow, new Vector2(5, 5), 3);

            m.Initialize();
            m.Run();


            /*
             *
             * GOALS:
             * 4. draw the form in any number of columns; pass in distance b/w columns
             * 5. allow highlight-scrolling (enforce order?)
             * 6. make the forms work, prohibit non-alphanumeric characters, add entered values to a dictionary
             * 7. enable border color, text color, highlight color, etc.
             */

            Console.ReadLine();
        }
Exemplo n.º 5
0
        private static void StartApplication()
        {
            using ILifetimeScope scope = Container.BeginLifetimeScope();
            Menu menu = scope.Resolve <Menu>();

            for (;;)
            {
                menu.ShowMenu();
                IMenuOption menuAction = menu.SelectMenuOption();
                Console.Clear();
                menuAction?.Action();
            }
        }
Exemplo n.º 6
0
        public IMenuOption SelectMenuOption()
        {
            if (!Console.ReadLine().SelectIntParse(GetOptions().Count, out int input))
            {
                Console.WriteLine("Incorrect input!");
                return(null);
            }

            List <IMenuOption> menuOptions = GetOptions().Select(x => x.Value).ToList();

            IMenuOption selectedOption = menuOptions[input - 1];

            return(selectedOption);
        }
Exemplo n.º 7
0
        static void Main(string[] args)
        {
            #region code page 437

            /* Set the window size and title
             * Console.Title = "Code Page 437: MS-DOS ASCII Characters";
             *
             * for (byte b = 0; b < byte.MaxValue; b++)
             * {
             *  char c = Encoding.GetEncoding(437).GetChars(new byte[] { b })[0];
             *  switch (b)
             *  {
             *      case 8: // Backspace
             *      case 9: // Tab
             *      case 10: // Line feed
             *      case 13: // Carriage return
             *          c = '.';
             *          break;
             *  }
             *
             *  Console.Write("{0:000} {1}   ", b, c);
             *
             *  // 7 is a beep -- Console.Beep() also works
             *  if (b == 7) Console.Write(" ");
             *
             *  if ((b + 1) % 8 == 0)
             *      Console.WriteLine();
             * }
             * Console.WriteLine();
             *
             * Console.ReadLine();
             */
            #endregion

            var o = new IMenuOption[3];

            o[0] = new SliderOption("Absorbance", myLower: 0, myUpper: 1, myIncrement: 0.1, myRounding: 1, myDefault: 0.0);
            o[1] = new OnOffOption("Timer", false);
            o[2] = new EnumOption("Light Color", 0, "red", "green", "blue", "uv", "gamma");

            var m = new Menu("beer's law", o, style12, ConsoleColor.White, ConsoleColor.White,
                             ConsoleColor.Blue, new Vector2(1, 2), 3);

            m.Initialize();

            Console.ReadLine();
        }
        internal int IndexOf(IMenuOption option)
        {
            if (option == null)
            {
                throw new ArgumentNullException(nameof(option));
            }

            var cast = option as TOption;

            if (cast == null)
            {
                return(-1);
            }
            else
            {
                return(IndexOf(cast));
            }
        }
Exemplo n.º 9
0
 public void Add <T>(IMenuOption <T> menuOption) where T : IInvokable, IMenuItem
 {
     menuOption.If().Null.Throw().Null(nameof(menuOption));
     this.AddToMapper(menuOption.Key, menuOption.Item);
 }
 private void OnOptionTextChanged(IMenuOption option)
 {
     CollectionChanged?.Invoke(this, CollectionUpdateTypes.Update, IndexOf(option), 1);
 }
Exemplo n.º 11
0
        internal Menu DisplayMenu(TaskCollection tasks)
        {
            Console.WriteLine("==========================");
            Console.WriteLine($"{this.Title}");
            foreach (var menuOption in mMenuOptions)
            {
                menuOption.Value.CheckPrerequisites(tasks);

                if (menuOption.Value.CanSelect)
                {
                    Console.WriteLine($"{menuOption.Key}. { menuOption.Value.Title}");
                }
                else
                {
                    var old = Console.ForegroundColor;
                    Console.ForegroundColor = ConsoleColor.DarkGray;
                    Console.WriteLine($"{menuOption.Key}. { menuOption.Value.Title}");
                    Console.ForegroundColor = old;
                }
            }

            if (this.Parent != null)
            {
                Console.WriteLine($"{mMenuOptions.Count + 1}. Go Back");
            }

            Console.WriteLine("==========================");

            if (!int.TryParse(ConsoleUtilities.ReadString("Please select an option:"), out int i))
            {
                Console.WriteLine("Invalid command, please try again!");
                return(this);
            }

            Console.Write("\r\n");

            IMenuOption option = null;

            if (!mMenuOptions.TryGetValue(i, out option))
            {
                if (i == mMenuOptions.Count + 1 && this.Parent != null)
                {
                    return(this.Parent);
                }

                Console.WriteLine("That's not an option, pal");
                return(this);
            }

            if (!option.CanSelect)
            {
                // This menu option is disabled, pretend nothing happened and go back to the same menu
                return(this);
            }

            switch (option)
            {
            case Menu m:
                return(m);

            case Command c:
                c.Execute(tasks);
                return(this);

            default:
                System.Diagnostics.Debug.Fail($"Unexpected menu option {option.GetType().FullName}");
                return(this);
            }
        }
Exemplo n.º 12
0
 public void addOption(IMenuOption option)
 {
     this.options.Add(option);
 }
Exemplo n.º 13
0
 public DecisionOnFurtherCourseOfProgram(IMenuOption Option)
 {
     this.Option     = Option;
     DummyConsole    = new FakeConsole();
     ExitFromProgram = new Exit.ExitOption(DummyConsole);
 }
Exemplo n.º 14
0
 private void addOption(List <IMenuOption> options, IMenuOption option)
 {
     options.Add(option);
 }