All Projects → lechu445 → ConsoleMenu

lechu445 / ConsoleMenu

Licence: MIT license
A simple, highly customizable, DOS-like console menu

Programming Languages

C#
18002 projects

Projects that are alternatives of or similar to ConsoleMenu

Pygame Menu
Menu for pygame. Simple, lightweight and easy to use
Stars: ✭ 244 (+803.7%)
Mutual labels:  menu
viewb
convert the command to a web server
Stars: ✭ 12 (-55.56%)
Mutual labels:  console-tool
curved-menu
VanillaJS fully configurable curved menu (circular navigation)
Stars: ✭ 30 (+11.11%)
Mutual labels:  menu
Kyarctab
Arcuated tab view controller with toggleing animation, 2 ~ 4 tabs are enabled. What's more, you can swipe left or right to toggle the views.
Stars: ✭ 246 (+811.11%)
Mutual labels:  menu
Easydropdown
💧 Fantastic dropdown in Swift
Stars: ✭ 254 (+840.74%)
Mutual labels:  menu
DelphiConsole
The Console class from C# ported to Delphi
Stars: ✭ 101 (+274.07%)
Mutual labels:  console-tool
React Native Dropdown Picker
A single / multiple, categorizable & searchable item picker (dropdown) component for react native which supports both Android & iOS.
Stars: ✭ 230 (+751.85%)
Mutual labels:  menu
CppConsoleTable
C++ Console Table: make text table in console easy and set up as you need
Stars: ✭ 53 (+96.3%)
Mutual labels:  console-tool
pixi-console
Pixi.js console
Stars: ✭ 39 (+44.44%)
Mutual labels:  console-tool
UIMenuScroll
The horizontal swiping navigation like on Facebook Messenger.
Stars: ✭ 18 (-33.33%)
Mutual labels:  menu
Timomenu
📋A pop-up menu for android that supports multi-row scrollable submenus.
Stars: ✭ 247 (+814.81%)
Mutual labels:  menu
Teaset
A UI library for react native, provides 20+ pure JS(ES6) components, focusing on content display and action control.
Stars: ✭ 2,845 (+10437.04%)
Mutual labels:  menu
coinbash
💰 A bash script (CLI) for displaying crypto currencies market data in a terminal 🖥
Stars: ✭ 110 (+307.41%)
Mutual labels:  console-tool
Dropdownmenukit
UIKit drop down menu, simple yet flexible and written in Swift
Stars: ✭ 246 (+811.11%)
Mutual labels:  menu
oc-menumanager-plugin
A Menu Management Plugin for October CMS
Stars: ✭ 29 (+7.41%)
Mutual labels:  menu
React Menu
React component for building accessible menu, dropdown, submenu, context menu and more.
Stars: ✭ 237 (+777.78%)
Mutual labels:  menu
terminalplot
No description or website provided.
Stars: ✭ 40 (+48.15%)
Mutual labels:  console-tool
JonContextMenu
A beautiful and minimalist arc menu like the Pinterest one, written in Swift
Stars: ✭ 60 (+122.22%)
Mutual labels:  menu
xdg-xmenu
Generate menu for xmenu
Stars: ✭ 31 (+14.81%)
Mutual labels:  menu
console-table
ConsoleTable helps you to display tabular data in a terminal/shell/console
Stars: ✭ 76 (+181.48%)
Mutual labels:  console-tool

ConsoleMenu

A simple, highly customizable, DOS-like console menu

img

Nuget package: https://www.nuget.org/packages/ConsoleMenu-simple

Usage

      var subMenu = new ConsoleMenu(args, level: 1)
        .Add("Sub_One", () => SomeAction("Sub_One"))
        .Add("Sub_Two", () => SomeAction("Sub_Two"))
        .Add("Sub_Three", () => SomeAction("Sub_Three"))
        .Add("Sub_Four", () => SomeAction("Sub_Four"))
        .Add("Sub_Close", ConsoleMenu.Close)
        .Configure(config =>
        {
          config.Selector = "--> ";
          config.EnableFilter = true;
          config.Title = "Submenu";
          config.EnableBreadcrumb = true;
          config.WriteBreadcrumbAction = titles => Console.WriteLine(string.Join(" / ", titles));
        });
        
      var menu = new ConsoleMenu(args, level: 0)
        .Add("One", () => SomeAction("One"))
        .Add("Two", () => SomeAction("Two"))
        .Add("Three", () => SomeAction("Three"))
        .Add("Sub", subMenu.Show)
        .Add("Change me", (thisMenu) => thisMenu.CurrentItem.Name = "I am changed!")
        .Add("Close", ConsoleMenu.Close)
        .Add("Action then Close", (thisMenu) => { SomeAction("Close"); thisMenu.CloseMenu(); })
        .Add("Exit", () => Environment.Exit(0))
        .Configure(config =>
        {
          config.Selector = "--> ";
          config.EnableFilter = true;
          config.Title = "Main menu";
          config.EnableWriteTitle = true;
          config.EnableBreadcrumb = true;
        });

      menu.Show();

Running app from console with pre-selected menu items

To do this, use public ConsoleMenu(string[] args, int level) constructor during initialization. Use double quotes for item names and digits for item numbers. Here are some examples:

--menu-select=0.1                      //run first at level 0 and second at level 1
--menu-select="Sub.Sub_One.'Close...'" //run "Sub" at level 0 and "Sub_One" at level 1, and "Close..." at level 2
--menu-select="Sub.2"                  //run item "Sub" at level 0, and then run third item at level 1

Configuration

You can also define configuration via .Configure() method. The default config looks like:

  public class MenuConfig
  {
    public ConsoleColor SelectedItemBackgroundColor = Console.ForegroundColor;
    public ConsoleColor SelectedItemForegroundColor = Console.BackgroundColor;
    public ConsoleColor ItemBackgroundColor = Console.BackgroundColor;
    public ConsoleColor ItemForegroundColor = Console.ForegroundColor;
    public Action WriteHeaderAction = () => Console.WriteLine("Pick an option:");
    public Action<MenuItem> WriteItemAction = item => Console.Write("[{0}] {1}", item.Index, item.Name);
    public string Selector = ">> ";
    public string FilterPrompt = "Filter: ";
    public bool ClearConsole = true;
    public bool EnableFilter = false;
    public string ArgsPreselectedItemsKey = "--menu-select=";
    public char ArgsPreselectedItemsValueSeparator = '.';
    public bool EnableWriteTitle = false;
    public string Title = "My menu";
    public Action<string> WriteTitleAction = title => Console.WriteLine(title);
    public bool EnableBreadcrumb = false;
    public Action<IReadOnlyList<string>> WriteBreadcrumbAction = titles => Console.WriteLine(string.Join(" > ", titles));
  }

Example:

      new ConsoleMenu()
        .Add("One", () => SomeAction("One"))
        .Add("Two", () => SomeAction("Two"))
        .Add("Close", ConsoleMenu.Close)
        .Configure(config => { config.Selector = "--> "; })
        .Show();

Requirements

Framework compatible with .NET Standard 1.3 (.NET Core 1.0, .NET Framework 4.6, Mono 4.6) or higher.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].