Пример #1
0
        /// <summary>
        /// Selection of a path in a ConsoleMenu
        /// </summary>
        /// <param name="path">path to start at</param>
        /// <returns>selected path</returns>
        public static string PathSelector(string path)
        {
            var dir = new DirectoryInfo(path);

            if (!dir.Exists)
            {
                throw new DirectoryNotFoundException($"{path}");
            }

            Console.Clear();
            var dirItems = new List <ConsoleMenuItem>
            {
                new ConsoleMenuItem <DirectoryInfo>("..", x =>
                {
                    if (x != null)
                    {
                        path = PathSelector(x.FullName);
                    }
                    else
                    {
                        path = DriveSelector();
                    }
                }, dir.Parent)
            };

            foreach (var sub in dir.GetDirectories().Where(x =>
                                                           !x.Attributes.HasFlag(FileAttributes.Hidden)
                                                           ))
            {
                var temp = sub;
                dirItems.Add(new ConsoleMenuItem <DirectoryInfo>(temp.Name, x =>
                {
                    path = PathSelector(temp.FullName);
                }, temp));
            }
            dirItems.Add(new ConsoleMenuSeperator('-'));

            dirItems.Add(new ConsoleMenuItem <DirectoryInfo>("Select", x =>
            {
                path = dir.FullName;
            }, dir));

            var pMenu = new ConsoleMenu <DirectoryInfo>(dir.FullName, dirItems);

            pMenu.RunConsoleMenu();

            return(path);
        }
Пример #2
0
        //internal handling
        private static T MenuSelectionHelper <T>(string header, IEnumerable <T> selectable, Func <T, string> displayProperty, bool abortable, bool clear = true)
            where T : class
        {
            T    result  = null;
            bool aborted = false;

            while (result == null && !aborted)
            {
                if (clear)
                {
                    Console.Clear();
                }
                else
                {
                    Console.WriteLine();
                }

                List <ConsoleMenuItem> items = new List <ConsoleMenuItem>();
                foreach (var item in selectable)
                {
                    var temp = item;
                    items.Add(new ConsoleMenuItem <T>(displayProperty(temp), x =>
                    {
                        result = x;
                    }, temp));
                }
                if (abortable)
                {
                    items.Add(new ConsoleMenuSeperator('-'));
                    items.Add(new ConsoleMenuItem <T>("Abort", x =>
                    {
                        aborted = true;
                    }, null));
                }

                var menu = new ConsoleMenu <T>(header, items);
                menu.RunConsoleMenu();
            }

            return(result);
        }
Пример #3
0
        //internal handling
        private static string DriveSelector()
        {
            string path = null;

            Console.Clear();

            var driveItems = new List <ConsoleMenuItem <DriveInfo> >();

            foreach (var drive in DriveInfo.GetDrives().Where(x =>
                                                              x.IsReady
                                                              ))
            {
                var temp = drive;
                driveItems.Add(new ConsoleMenuItem <DriveInfo>(temp.Name, x =>
                {
                    path = PathSelector(x.RootDirectory.FullName);
                }, temp));
            }
            var pMenu = new ConsoleMenu <DriveInfo>("Drives", driveItems);

            pMenu.RunConsoleMenu();

            return(path);
        }