Exemplo n.º 1
0
        public override void Handle(string path) // команда по переходу в другой каталог по полному пути либо по названию подпапки из текущего активного каталога
        {
            PrintList printList = new PrintList();

            try
            {
                if (Directory.Exists(path))
                {
                    Directory.SetCurrentDirectory(path);
                    printList.ListDirsAndFiles();
                }
                else
                {
                    Directory.GetCurrentDirectory();
                    printList.ListDirsAndFilesFromInput(path);
                }
            }
            catch (UnauthorizedAccessException)
            {
                Console.WriteLine("Couldn't access path: Access Denied");
            }
        }
Exemplo n.º 2
0
        static void Main(string[] args)

        {
            Console.OutputEncoding = Encoding.UTF8;
            string     lastStateSave;
            PrintList  printList  = new PrintList();  // класс для вывода списка
            Properties properties = new Properties(); // класс настроек

            properties.SetProperetiesPath();
            if (File.Exists(properties.ProperetiesPath)) //если файл настроек уже существует - загрузка настроек
            {
                properties.LoadSettings();
            }
            if (properties.LastState != null) // если существует настройка с последним активным каталогом - загружаем его
            {
                Directory.SetCurrentDirectory(properties.LastState);
                printList.ListDirsAndFiles();
            }
            else //в другом случае проводим первый старт программы
            {
                printList.InitialStart();
                var helpPanel = new Table();
                helpPanel.AddColumn("write help to get controls");
                helpPanel.Collapse();
                helpPanel.Alignment(Justify.Right);
                helpPanel.RightAligned();
                helpPanel.HeavyBorder();
                AnsiConsole.Render(helpPanel);
                Properties.PageLength = 100;
            }
            List <Command> commands = new List <Command>(); // создаем список доступных команд

            commands.Add(new GoToCommand());
            commands.Add(new CopyCommand());
            commands.Add(new DeleteCommand());
            commands.Add(new InfoCommand());
            commands.Add(new HelpCommand());
            commands.Add(new PageCommand());
            while (true)
            {
                var table = new Table();
                userCommand = AnsiConsole.Ask <string>("Command Line:");
                string userCommandToLowerCase = userCommand.ToLower();
                if (userCommandToLowerCase == "exit") // комманда выведена отдельно вне списка т.к. не имеет аргументов и исполняется в одну строку
                {
                    break;
                }
                else if (userCommandToLowerCase == "up") //тоже вне спика т.к. нет аргументов и метод исполнения внутри класса PrintList
                {
                    printList.GoUp();
                }

                var parsedCommand  = Regex.Match(userCommandToLowerCase, @"^([\w\-]+)").ToString(); // считывание команды
                var parsedArgument = userCommandToLowerCase.Split(' ', 2).Skip(1).FirstOrDefault(); // считывание аргумента

                foreach (Command command in commands)
                {
                    if (command.CanHandle(parsedCommand))
                    {
                        command.Handle(parsedArgument);
                    }
                }
            }
            lastStateSave = Directory.GetCurrentDirectory();
            properties.Save(lastStateSave, Properties.PageLength); // сохранение настроек при завершении программы
        }