namespace Quadarax.Foundation.Core.QConsole
{
    public static class Constants
    {

        public static class Console
        {
            public const string DebugModeExplicitArg = "-dbg";
        }

        public static class Arguments
        {
            public static class Selection
            {
                public const string Code = "s";
                public const string Description = "Execute command with selection mode. You will be able to select values.";
                public const string Hint = "<enable>";

                public static class Clear
                {
                    public const string Code = "c";
                    public const string Description = "Clears all global selection cache.";
                    public const string Hint = "<enable>";
    
                }

                public static class Delete
                {
                    public const string Code = "d";
                    public const string Description = "Delete specific ordinals from global selection cache.";
                    public const string Hint = "<ordinal_values>";
                }
                public static class List
                {
                    public const string Code = "l";
                    public const string Description = "Disable list global selection cache.";
                    public const string Hint = "<disaled>";
                }
            }

            public static class Lists
            {
                public static class PageMode
                {
                    public const string Code = "p";
                    public const string Description = "Enables paging mode. List shows items by pages.";
                    public const string Hint = "<enables>";
                }
                public static class ItemsPerPage
                {
                    public const string Code = "pp";
                    public const string Description = "Defines number of items shown in one page. Use only in Paging mode.";
                    public const string Hint = "<count_per_page>";
                }

                public static class Page
                {
                    public const string Code = "pg";
                    public const string Description = "Defines shown default page. Use only in Paging mode. If 0, then inactive.";
                    public const string Hint = "<default_page>";
                }

            }
        }

        public static class Commands
        {
            public static class Help
            {

                public const string Name = "HELP";
                public const string Description = "Shows list of available commands and arguments.";

                public static class ArgCommandName
                {
                    public const string Code = "n";
                    public const string Hint = "command_name";
                    public const string Description = "Name of command to list specification.";
                }

                public static class ArgFlagAll
                {
                    public const string Code = "all";
                    public const string Hint = "show_all";
                    public const string Description = "Flag if set dump all commands help.";
                }
            }

            public static class Exit
            {
                public const string Name = "EXIT";
                public const string Description = "Exits interactive console.";
            }

            public static class Clear
            {
                public const string Name = "CLEAR";
                public const string Description = "Clears console window.";
            }

            public static class Selection
            {
                public const string Name = "SELECTION";
                public const string Description = "Shows global selection cache and provide operations";
            }
            
            public static class Print
            {
                public const string Name = "PRINT";
                public const string Description = "Print outs variable value to console";

                public static class ArgCommandClipboard
                {
                    public const string Code = "c";
                    public const string Hint = "enabled";
                    public const string Description = "Copy output to clipboard.";
                }
                public static class ArgCommandValue
                {
                    public const string Code = "v";
                    public const string Hint = "value";
                    public const string Description = "Variable name code @<selection_ordinal>.";
                }
            }

        }
    }
}
