private static ConsoleMenuItem CreateColorMenu() { var crazyTheme = new MenuColorTheme(); crazyTheme.Selector.Foreground = Color.Yellow; crazyTheme.MenuItem.Foreground = Color.DarkRed; crazyTheme.MenuItem.DisabledForeground = Color.Magenta; crazyTheme.MenuItem.SelectedForeground = Color.Green; crazyTheme.MenuItem.SelectedBackground = Color.Blue; crazyTheme.MenuItem.DisabledSelectedForeground = Color.Blue; crazyTheme.MenuItem.DisabledSelectedBackground = Color.DarkGray; crazyTheme.Expander.Foreground = Color.Magenta; crazyTheme.Expander.Background = Color.Green; crazyTheme.HeaderForeground = Color.Black; crazyTheme.HeaderBackground = Color.Yellow; var chooseDefaultTheme = new ConsoleMenuItem("Default", m => ((ColoredConsoleMenu)m.Menu).Theme = new MenuColorTheme()); var chooseBlueTheme = new ConsoleMenuItem("Blue", m => ((ColoredConsoleMenu)m.Menu).Theme = ConsoleMenuThemes.Blue); var chooseRedTheme = new ConsoleMenuItem("Red", m => ((ColoredConsoleMenu)m.Menu).Theme = ConsoleMenuThemes.Red); var choosePinkTheme = new ConsoleMenuItem("Pink", m => ((ColoredConsoleMenu)m.Menu).Theme = ConsoleMenuThemes.Pink); var chooseCrazyTheme = new ConsoleMenuItem("Crazy", m => ((ColoredConsoleMenu)m.Menu).Theme = crazyTheme); return(new ConsoleMenuItem( "Choose color theme", chooseBlueTheme, chooseRedTheme, choosePinkTheme, new ConsoleMenuSeperator(), chooseCrazyTheme, chooseDefaultTheme, new ConsoleMenuItem("Bahama", m => ((ColoredConsoleMenu)m.Menu).Theme = ConsoleMenuThemes.Bahama), new ConsoleMenuItem("CloseOptions", new ConsoleMenuItem("Exit application but use a long long name", x => Environment.Exit(0))), new ConsoleMenuItem("A disabled menu item using a long name"))); }
/// <summary>Finishes the creation of the menu and returns to the parent.</summary> /// <returns>The parent menu builder</returns> public ICanAddMenuItems FinishSubMenu() { var subMenu = new ConsoleMenuItem(subMenuText, menuItems.ToArray()); ((IMenuItemParent)parent).AddItem(subMenu); return(parent as ICanAddMenuItems); }
private static void ShowProgress(ConsoleMenuItem sender) { var progressBar = new ProgressBar(100, "Some long running process", ConsoleColor.DarkYellow); for (int i = 0; i < 100; i++) { progressBar.Tick(); Thread.Sleep(50); } }
private static void ColorSimulation(ConsoleMenuItem obj) { foreach (PropertyInfo property in typeof(Color).GetProperties(BindingFlags.Static | BindingFlags.Public)) { if (property.PropertyType == typeof(Color)) { var value = (Color)property.GetValue(null); ColoredConsole.Instance.WriteLine(property.Name, value); Thread.Sleep(1000); } } }
private static void DisplaySubMenu(ConsoleMenuItem consoleMenuItem) { Console.Clear(); Console.WriteLine("Please make a selection: {0}", Environment.NewLine); foreach (ConsoleSubMenuItem processor in consoleMenuItem.Processors) { Console.WriteLine(" ({0}) {1}", processor.Key, processor.Name); } Console.WriteLine("{0}Enter {1}{2} (enter 'h' to return to the home menu)", Environment.NewLine, consoleMenuItem.Processors.Min(s => s.Key), consoleMenuItem.Processors.Count == 1 ? string.Empty : " - " + consoleMenuItem.Processors.Last().Key); }
private static void ConnectToServer(ConsoleMenuItem sender) { if (userName == null) { return; } var progressBar = new ProgressBar( 100, "Connecting to server with username " + userName, new ProgressBarOptions { BackgroundColor = ConsoleColor.Blue, ForeGroundColor = ConsoleColor.Cyan, ProgressBarOnBottom = false, ProgressCharacter = '*' }); for (int i = 0; i < 100; i++) { progressBar.Tick(); Thread.Sleep(10); } userName = null; }
public async Task RunAsync(CancellationToken cancellationToken) { ConsoleMenu consoleMenu = GetConsoleMenu(); do { DisplayMainMenu(consoleMenu); ConsoleKeyInfo consoleKeyInfo = Console.ReadKey(); string selection = consoleKeyInfo.KeyChar.ToString(); if (selection.ToLower() == "x") { break; } else { ConsoleMenuItem consoleMenuItem = consoleMenu.ConsoleMenuItems.SingleOrDefault(s => string.Equals(s.Key, selection, StringComparison.OrdinalIgnoreCase)); if (consoleMenuItem == null) { Console.Clear(); Console.WriteLine("Invalid selection! Please try again (press any key to continue)"); Console.ReadKey(); Console.Clear(); } else { var subApp = new ProcessorSubProgramRunner(_serviceProvider); await subApp.RunAsync(consoleMenuItem, cancellationToken); } } } while (true); }
public ISubMenuBuilder WithItem(ConsoleMenuItem item) { menuItems.Add(item); return(this); }
private static void InsertName(ConsoleMenuItem sender) { Console.WriteLine("Enter the user name"); userName = Console.ReadLine(); }
private ConsoleMenu GetConsoleMenu() { List <Type> processorTypes = new AssemblyScanner() .GetTypesWithAttribute <ProcessorAttribute>() .OrderBy(t => t.Name) .ToList(); var consoleMenuItems = new List <ConsoleMenuItem>(); List <string> categories = processorTypes .Select(t => { ProcessorAttribute processorAttribute = (ProcessorAttribute)t.GetCustomAttributes(typeof(ProcessorAttribute), true).Single(); return(processorAttribute.Category ?? GetDefaultCategory(t)); }) .OrderBy(s => s) .Distinct() .ToList(); for (int i = 0; i < categories.Count; i++) { string key = (i + 1).ToString(); string name = categories[i]; var subMenuItems = new List <ConsoleSubMenuItem>(); List <Type> processorTypesMatched = processorTypes .Where(t => { ProcessorAttribute processorAttr = (ProcessorAttribute)t.GetCustomAttributes(typeof(ProcessorAttribute), true).Single(); return((processorAttr.Category ?? GetDefaultCategory(t)) == name); }) .ToList(); for (int j = 0; j < processorTypesMatched.Count; j++) { Type t = processorTypesMatched[j]; ProcessorAttribute processorAttr = (ProcessorAttribute)t.GetCustomAttributes(typeof(ProcessorAttribute), true).Single(); string k = processorAttr.Key ?? (j + 1).ToString(); string n = processorAttr.Name ?? t.Name; k = ToSingleCharacter(k); var menuItem = new ConsoleSubMenuItem(k, n, t); subMenuItems.Add(menuItem); } key = ToSingleCharacter(key); var consoleMenuItem = new ConsoleMenuItem(key, name, subMenuItems); consoleMenuItems.Add(consoleMenuItem); } return(new ConsoleMenu(consoleMenuItems)); }
private void UpdateNamesInTopRatedMoviesRunProcess(ConsoleMenuItem sender) { _updateNamesInTopRatedMoviesProcess.RunProcess(); Console.WriteLine("Done. Press any key to return to the menu..."); Console.ReadLine(); }
private static void DoCrash(ConsoleMenuItem sender) { throw new InvalidOperationException("Some invalid operartion was performed"); }
public async Task RunAsync(ConsoleMenuItem consoleMenuItem, CancellationToken cancellationToken) { do { DisplaySubMenu(consoleMenuItem); ConsoleKeyInfo consoleKeyInfo = Console.ReadKey(); string selection = consoleKeyInfo.KeyChar.ToString(); if (selection.ToLower() == "h") { break; } else { ConsoleSubMenuItem consoleSubMenuItem = consoleMenuItem.Processors.SingleOrDefault(s => string.Equals(s.Key, selection, StringComparison.OrdinalIgnoreCase)); if (consoleSubMenuItem == null) { Console.Clear(); Console.WriteLine("Invalid selection! Please try again (press any key to continue)"); Console.ReadKey(); Console.Clear(); } else { Console.Clear(); IServiceProvider scopedServiceProvider = _serviceProvider.CreateScope().ServiceProvider; object processor = scopedServiceProvider.GetService(consoleSubMenuItem.ProcessorType); if (!processor.GetType().GetInterfaces().Contains(typeof(IProcessor <,>)) && !processor.GetType().GetInterfaces().Contains(typeof(IProcessor <>)) && !processor.GetType().GetInterfaces().Contains(typeof(IProcessor))) { Console.WriteLine("Error! That selection is not a processor (press any key to continue)"); Console.ReadKey(); Console.Clear(); } else if (processor.GetType().GetInterfaces().Contains(typeof(IProcessor <,>)) || processor.GetType().GetInterfaces().Contains(typeof(IProcessor <>))) { InitializeProcessor(processor, scopedServiceProvider); Type inputType = processor.GetType().GenericTypeArguments[0]; object input = Activator.CreateInstance(inputType); await ExecuteAsync(async() => { await((dynamic)processor).ProcessAsync(input, cancellationToken); }); } else { InitializeProcessor(processor, scopedServiceProvider); await ExecuteAsync(async() => { await((IProcessor)processor).ProcessAsync(cancellationToken); }); } Console.WriteLine(); Console.WriteLine("***Complete***"); Console.WriteLine("Press any key to continue"); Console.ReadKey(); } } } while (true); }
public ICanAddMenuItems WithItem(ConsoleMenuItem item) { menu.Add(item); return(this); }
/// <inheritdoc /> public void Run(IConsole console) { console.Clear(); var exitGuid = new Guid(@"a7725515-7f82-4c18-9c36-343003bdf20d"); var menuItems = new ConsoleMenuItem[] { new ConsoleMenuItem { Enabled = true, Caption = "menu item number one", Code = Guid.NewGuid() }, new ConsoleMenuItem { Enabled = true, Caption = "menu item number two", Code = Guid.NewGuid() }, new ConsoleMenuItem { Enabled = false, Caption = "menu item number three", Code = Guid.NewGuid() }, new ConsoleMenuItem { Enabled = true, Caption = "menu item number four with very long description", Code = Guid.NewGuid() }, new ConsoleMenuItem { Enabled = false, Caption = "menu item number five", Code = Guid.NewGuid() }, new ConsoleMenuItem { Enabled = true, Caption = "menu item number six", Code = Guid.NewGuid() }, new ConsoleMenuItem { Enabled = true, Caption = "Exit menu DEMO", Code = exitGuid } }; var menuStyling = new MenuStyles { ActiveItem = new ConsoleFontColor(Color.Red, Color.Black), DisabledItem = new ConsoleFontColor(Color.Gray, Color.Black), NormalItem = new ConsoleFontColor(Color.WhiteSmoke, Color.Black), SelectedItem = new ConsoleFontColor(Color.Black, Color.LightGray), Alignment = TextAlign.Center }; var aConsole = new AtomicConsole(console); int menuStartY = 6; int menuStartX = 5; int menuContentWidth = 25; var frameColors = new ConsoleFontColor(Color.Yellow, Color.Black); var boxInnerColors = new ConsoleFontColor(Color.WhiteSmoke, Color.Black); var frameStyle = new FrameStyle(frameColors, boxInnerColors, @"┌─┐││└─┘", ' '); var ops = new ConsoleOperations(aConsole); ops.WriteTextBox(new Rectangle(menuStartX - 1, menuStartY - 1, menuContentWidth + 2, menuItems.Length + 2), "", frameStyle); var menu = new ConsoleMenu(aConsole, new Rectangle(menuStartX, menuStartY, menuContentWidth, 0), menuItems, menuStyling); menu.RenderAll(); ConsoleMenuItem result = null; while (result == null || result.Code != exitGuid) { result = menu.Focus(resetActiveItem: true); aConsole.CleanLineSync(0, Color.Black); aConsole.RunAtomicOperations(ac => { aConsole.SetCursorPosition(0, 0); aConsole.PrintColorfullText( new KeyValuePair <ConsoleFontColor, string>(new ConsoleFontColor(Color.BlanchedAlmond, Color.Black), @"Selected menu: "), new KeyValuePair <ConsoleFontColor, string>(new ConsoleFontColor(Color.Gold, Color.Black), result?.Caption ?? "#NULL#") ); }); Thread.Sleep(1000); } aConsole.SetCursorPosition(0, menuStartY + menuItems.Length + 1); aConsole.ShowCursor(); aConsole.WaitForNextPage(); }
public void AddItem(ConsoleMenuItem item) { menuItems.Add(item); }
public ConsoleMenu(ConsoleMenuItem[] menuItems) { this.menuItems = menuItems; }
void IMenuItemParent.AddItem(ConsoleMenuItem item) { WithItem(item); }
public MenuItemChangedHandlerArgs(ConsoleMenuItem activeItem, ConsoleMenuItem previousItem) { this.ActiveItem = activeItem; this.PreviousItem = previousItem; }