Beispiel #1
0
 public static void TryDetachFromConsoleWindow()
 {
     if (IsWindows)
     {
         WindowsConsole.TryDetachFromConsoleWindow();
     }
 }
Beispiel #2
0
        static void Main(string[] args)
        {
            WindowsConsole.TryEnableVirtualTerminalProcessing();

            Console.Write(new StringBuilder()
                          .SetTitle("Hello World")
                          .HideCursor()
                          .SaveState()
                          );

            for (var i = 0;; i++)
            {
                var color = new AnsiColor(
                    (byte)(128 + Math.Sin(i / 200d) * 127),
                    (byte)(128 + Math.Sin(i / 100d) * 127),
                    (byte)(128 + Math.Sin(i / 130d) * 80));
                Console.Write(new StringBuilder()
                              .RestoreState()
                              .SaveState()
                              .SetMode(Mode.Reset)
                              .Append("HELLO")
                              .SetMode(Mode.Bold)
                              .SetForegroundColor(color)
                              .Append("WORLD")
                              );
                Thread.Sleep(25);
            }
        }
Beispiel #3
0
        static ConsoleLogHandler()
        {
            WriteAnsiColors = !System.Console.IsOutputRedirected;

            if (WriteAnsiColors && IsWindows)
            {
                WriteAnsiColors = WindowsConsole.TryEnableVirtualTerminalProcessing();
            }
        }
Beispiel #4
0
        public void TestThatUnknownColorsTranslateToNone()
        {
            if (!IsTestApplicable)
            {
                return;
            }

            WindowsConsole.TranslateBackgroundColor((ConsoleColor)int.MaxValue)
            .Should().Be(NativeMethods.CharAttributes.None);
        }
Beispiel #5
0
        public void TestThatScrollingZeroLinesDoesNotThrow()
        {
            if (!IsTestApplicable)
            {
                return;
            }

            var console = new WindowsConsole();

            console.Invoking(c => c.ScrollContents(0)).Should().NotThrow();
        }
Beispiel #6
0
        public void TestThatWindowsConsoleIsScrollable()
        {
            if (!IsTestApplicable)
            {
                return;
            }

            var console = new WindowsConsole();

            console.IsScrollable.Should().BeTrue();
        }
Beispiel #7
0
        public void TestThatScrollingANegativeNumberOfLinesThrows()
        {
            if (!IsTestApplicable)
            {
                return;
            }

            var console = new WindowsConsole();

            console.Invoking(c => c.ScrollContents(Any.NegativeInt()))
            .Should().Throw <ArgumentOutOfRangeException>();
        }
        public async void PerformUpgrade(string[] packages)
        {
            MainView?.ToForm().Hide();

            List <string> shortcuts = new List <string>();

            ShortcutService?.WatchDesktops(shortcut => shortcuts.Add(shortcut));

            // upgrade
            WindowsConsole.AllocConsole();
            Console.CursorVisible = false;

            try
            {
                List <ChocolateyPackage> chocoPackages = ChocolateyService.GetPackagesByName(packages.ToList());
                if (chocoPackages.Count > 0)
                {
                    ChocolateyService.Upgrade(chocoPackages, CandyShopContext.ValidExitCodes.ToArray());
                }
            }
            catch (ChocolateyException e)
            {
                MainView.DisplayError(LocaleEN.ERROR_UPGRADING_OUTDATED_PACKAGES, e.Message);
                return; // TODO why return? shortcuts should be deleted even if chocolatey fails to upgrade some packages (others may have been upgraded and added a shortcut)
            }

            // display results
            Task minDelay = Task.Run(() => Thread.Sleep(3 * 1000));

            IntPtr handle = WindowsConsole.GetConsoleWindow();

            if (!IntPtr.Zero.Equals(handle))
            {
                WindowsConsole.SetForegroundWindow(handle);
            }
            Console.CursorVisible = false;
            Console.Write("\nPress any key to continue... ");
            Console.ReadKey();

            // delete shortcuts
            ShortcutService?.DisposeWatchers();
            if (MainView.UpgradePackagesPage.CleanShortcuts)
            {
                await minDelay; // wait for shortcuts to be created
                ShortcutService?.DeleteShortcuts(shortcuts);
            }

            // TODO if there still are outdated packages, return to MainView
            // TODO if there was an error, offer to open log folder? go back to application?
            MainView?.ToForm().Dispose();
            Program.Exit();
        }
Beispiel #9
0
        static Console()
        {
#if NET_2_1
            Encoding inputEncoding;
            Encoding outputEncoding;
#endif

            if (Environment.IsRunningOnWindows)
            {
                //
                // On Windows, follow the Windows tradition
                //
#if NET_2_1
                // should never happen since Moonlight does not run on windows
                inputEncoding = outputEncoding = Encoding.Default;
#else
                try {
                    inputEncoding  = Encoding.GetEncoding(WindowsConsole.GetInputCodePage());
                    outputEncoding = Encoding.GetEncoding(WindowsConsole.GetOutputCodePage());
                    // ArgumentException and NotSupportedException can be thrown as well
                } catch {
                    // FIXME: I18N assemblies are not available when compiling mcs
                    // Use Latin 1 as it is fast and UTF-8 is never used as console code page
                    inputEncoding = outputEncoding = Encoding.Default;
                }
#endif
            }
            else
            {
                //
                // On Unix systems (128), do not output the
                // UTF-8 ZWNBSP (zero-width non-breaking space).
                //
                int code_page = 0;
                Encoding.InternalCodePage(ref code_page);

                if (code_page != -1 && ((code_page & 0x0fffffff) == 3 ||              // UTF8Encoding.UTF8_CODE_PAGE
                                        ((code_page & 0x10000000) != 0)))
                {
                    inputEncoding = outputEncoding = Encoding.UTF8Unmarked;
                }
                else
                {
                    inputEncoding = outputEncoding = Encoding.Default;
                }
            }

            SetupStreams(inputEncoding, outputEncoding);
        }
Beispiel #10
0
        public void TestThatColorTranslationIsCorrectForValidColors()
        {
            if (!IsTestApplicable)
            {
                return;
            }

            foreach (var colorName in Enum.GetNames(typeof(ConsoleColor)))
            {
                var consoleColor = (ConsoleColor)
                                   (typeof(ConsoleColor).GetTypeInfo().GetField(colorName).GetValue(null));

                var bgColorName = "Background" + colorName;

                var bgEnumValue = typeof(NativeMethods.CharAttributes).GetTypeInfo().GetField(bgColorName);
                bgEnumValue.Should().NotBeNull($"{bgColorName} should be a member of {nameof(NativeMethods.CharAttributes)}");

                var bgColor = (NativeMethods.CharAttributes)bgEnumValue.GetValue(null);

                var translated = WindowsConsole.TranslateBackgroundColor(consoleColor);
                translated.Should().Be(bgColor);
            }
        }
Beispiel #11
0
        public void TestThatScrollingPositiveLinesEitherSucceedsOrThrowsExpectedException()
        {
            if (!IsTestApplicable)
            {
                return;
            }

            var console = new WindowsConsole();

            try
            {
                console.ScrollContents(1);
            }
            catch (NotSupportedException)
            {
            }
            catch (ArgumentException)
            {
            }
            catch (Exception)
            {
                throw;
            }
        }
Beispiel #12
0
        static Console()
        {
#if NET_2_1
            Encoding inputEncoding;
            Encoding outputEncoding;
#endif

            if (Environment.IsRunningOnWindows)
            {
                //
                // On Windows, follow the Windows tradition
                //
#if NET_2_1
                // should never happen since Moonlight does not run on windows
                inputEncoding = outputEncoding = Encoding.Default;
#else
                try {
                    inputEncoding  = Encoding.GetEncoding(WindowsConsole.GetInputCodePage());
                    outputEncoding = Encoding.GetEncoding(WindowsConsole.GetOutputCodePage());
                    // ArgumentException and NotSupportedException can be thrown as well
                } catch {
                    // FIXME: I18N assemblies are not available when compiling mcs
                    // Use Latin 1 as it is fast and UTF-8 is never used as console code page
                    inputEncoding = outputEncoding = Encoding.Default;
                }
#endif
            }
            else
            {
                //
                // On Unix systems (128), do not output the
                // UTF-8 ZWNBSP (zero-width non-breaking space).
                //
                int code_page = 0;
                Encoding.InternalCodePage(ref code_page);

                if (code_page != -1 && (
                        (code_page & 0x0fffffff) == 3 ||        // UTF8Encoding.UTF8_CODE_PAGE
                        ((code_page & 0x10000000) != 0)
                        )
                    )
                {
                    inputEncoding = outputEncoding = Encoding.UTF8Unmarked;
                }
                else
                {
                    inputEncoding = outputEncoding = Encoding.Default;
                }
            }

            stderr = new UnexceptionalStreamWriter(OpenStandardError(0), outputEncoding);
            ((StreamWriter)stderr).AutoFlush = true;
            stderr = TextWriter.Synchronized(stderr, true);

#if !NET_2_1
            if (!Environment.IsRunningOnWindows && ConsoleDriver.IsConsole)
            {
                StreamWriter w = new CStreamWriter(OpenStandardOutput(0), outputEncoding);
                w.AutoFlush = true;
                stdout      = TextWriter.Synchronized(w, true);
                stdin       = new CStreamReader(OpenStandardInput(0), inputEncoding);
            }
            else
            {
#endif
            stdout = new UnexceptionalStreamWriter(OpenStandardOutput(0), outputEncoding);
            ((StreamWriter)stdout).AutoFlush = true;
            stdout = TextWriter.Synchronized(stdout, true);
            stdin  = new UnexceptionalStreamReader(OpenStandardInput(0), inputEncoding);
            stdin  = TextReader.Synchronized(stdin);
#if !NET_2_1
        }
#endif

            GC.SuppressFinalize(stdout);
            GC.SuppressFinalize(stderr);
            GC.SuppressFinalize(stdin);
        }
 public static IWindow GetWindow() => runningWindows
     ? WindowFactory.Create(WindowsConsole.GetWindow())
     : WindowFactory.Create(LinuxConsole.GetWindow());
 static ConsoleSink()
 {
     WindowsConsole.EnableVirtualTerminalProcessing();
 }