Example #1
0
        static void Main(string[] args)
        {
            Win32Console.AttachConsole();

            if (!args.Any())
            {
                Console.WriteLine(
                    @"Usage: askme.exe ""question"" [""question=answer"", ""key:question"", ""key:question=answer""...]");
                Exit(1);
                return;
            }

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            var parser = new QuestionParser();
            var errors = parser.TryParse(args, out var qs);

            if (errors.Any())
            {
                Console.Error.WriteLine("Failed to parse questions");
                errors.ForEach(e => Console.Error.WriteLine($"Failed to parse: {e}"));
                Exit(1);
                return;
            }

            using var form = new PromptForm(qs);
            var result = form.ShowDialog();

            if (result != DialogResult.OK)
            {
                Exit(-1);
                return;
            }

            var answers = form.Response.Answers;

            Console.WriteLine(JsonSerializer.Serialize(answers));

            Exit();
        }
Example #2
0
    public void Draw()
    {
        if (Height <= 0)
        {
            Height = 1;
        }
        if (Width <= 0)
        {
            Width = 1;
        }
        for (short y = 0; y < Height; ++y)
        {
            for (short x = 0; x < Width; ++x)
            {
                Win32Console.PutChar((short)(x + X), (short)(y + Y), ' ', ConsoleColor.Black, ConsoleColor.Gray);
            }
        }
        short  sx = 0;
        short  sy = 0;
        string s  = Text;

        if (Height % 2 == 0)
        {
            sy = (short)(Height / 2);
        }
        else
        {
            sy = (short)((Height - 1) / 2);
        }
        sx = (short)((Width - Text?.Length ?? 0) / 2);
        if (Text.Length >= Width)
        {
            sx = 0;
            if (Text.Length > Width)
            {
                s = s.Substring(0, Width);
            }
        }
        Win32Console.PutString((short)(X + sx), (short)(Y + sy), s);
    }
Example #3
0
    public static void Main(string[] args)
    {
        Win32Console.SetConsoleInputMode(ConsoleInputMode.ExtendedFlags | ConsoleInputMode.MouseInput);
        ConsoleButton cb1 = new ConsoleButton {
            X      = 10,
            Y      = 10,
            Width  = 10,
            Height = 1,
            Text   = "Button 1"
        };
        ConsoleButton cb2 = new ConsoleButton {
            X      = 40,
            Y      = 10,
            Width  = 10,
            Height = 1,
            Text   = "Button 2"
        };

        void handler(ConsoleButton cb) => Win32Console.PutString(0, 0, cb.Text);

        cb1.Pressed += handler;
        cb2.Pressed += handler;
        cb1.Draw();
        cb2.Draw();
        foreach (IInputEvent ev in Win32Console.PumpInputEvents(true))
        {
            if (ev is MouseInputEvent mie)
            {
                Win32Console.PutString(string.Format("{0} {1} {2},{3}             ", mie.Type, mie.LeftButton, mie.MouseX, mie.MouseY));
            }
            if (!cb1.OnInputEvent(ev))
            {
                cb2.OnInputEvent(ev);
            }
        }
    }