Ejemplo n.º 1
0
            public static bool Choose(Action writeMessage, IDictionary <string, Action> keyActions, IList <Action> displayMessages, bool forceSelect = false)
            {
                var keyOptionsMessage = string.Format("(Options: {0}.{1}) ",
                                                      string.Join(", ", keyActions.Keys.Select(key => key.ToUpperInvariant())),
                                                      forceSelect ? "" : " Any other key cancels"
                                                      );
                Action writeMessageAndKeys = () => {
                    writeMessage();
                    if (displayMessages.Any())
                    {
                        foreach (var displayMessage in displayMessages)
                        {
                            displayMessage();
                        }
                        "".WriteLine();
                    }
                    keyOptionsMessage.Write();
                };
                var  consoleChooser = new ConsoleChooser(writeMessageAndKeys);
                bool choosed;

                do
                {
                    choosed = consoleChooser.Choose(keyActions);
                    if (forceSelect && !choosed)
                    {
                        "The selected option is invalid".Message();
                    }
                } while (forceSelect && !choosed);
                return(choosed);
            }
Ejemplo n.º 2
0
 public bool Confirm()
 {
     if (!_keyActions.Any() || _keyActions.Count > 1)
     {
         throw new NotSupportedException("The confirm dialog must have one and only one option");
     }
     return(ConsoleChooser.Confirm(_writeMessage, _keyActions.First().Key, _keyActions.First().Value));
 }
Ejemplo n.º 3
0
            public static bool Confirm(Action writeMessage, string key, Action action)
            {
                var    keyOptionsMessage   = string.Format("('{0}' confirms. Any other key cancels) ", key.ToUpperInvariant());
                Action writeMessageAndKeys = () => {
                    writeMessage();
                    keyOptionsMessage.WriteLine();
                };
                var consoleChooser = new ConsoleChooser(writeMessageAndKeys);
                var confirmed      = false;

                consoleChooser.Choose(new Dictionary <string, Action> {
                    { key, () => {
                          confirmed = true;
                          action();
                      } }
                });
                return(confirmed);
            }
Ejemplo n.º 4
0
        public static void Main(string[] args)
        {
            var sink      = new ConsoleSink();
            var chooser   = new ConsoleChooser();
            var envParams = new EnvParams();

            using (var ci = new CommandInterface(sink, chooser, envParams))
            {
                Console.CancelKeyPress += (x, y) =>
                {
                    y.Cancel = true;
                    ci.Cancel();
                };

                //// If errors occured while parsing switches
                //// then treat this an exit condition.
                bool isExit;
                ci.DoOptions(out isExit);
                if (isExit || sink.PrintedError)
                {
                    Environment.ExitCode = sink.PrintedError ? 1 : 0;
                    return;
                }

                string line;
                while (true)
                {
                    //// Because pressing CTRL-C may return a null line
                    line = Console.ReadLine();
                    line = line == null ? string.Empty : line.Trim();
                    if (line == CommandInterface.ExitCommand ||
                        line == CommandInterface.ExitShortCommand)
                    {
                        Environment.ExitCode = sink.PrintedError ? 1 : 0;
                        return;
                    }

                    ci.DoCommand(line);
                }
            }
        }
Ejemplo n.º 5
0
 public void ChooseAndLoopOptions()
 {
     ConsoleChooser.ChooseAndLoopOptions(_writeMessage, _keyActions, _displayMessages);
 }
Ejemplo n.º 6
0
 public bool Choose(bool foreSelect = false)
 {
     return(ConsoleChooser.Choose(_writeMessage, _keyActions, _displayMessages, foreSelect));
 }