// // Copyright (c) 2006 Microsoft Corporation. All rights reserved. // // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF // ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A // PARTICULAR PURPOSE. // using System; using System.Collections.Generic; using System.Text; using System.Management.Automation; using System.Management.Automation.Host; using System.Management.Automation.Runspaces; namespace Microsoft.Samples.PowerShell.Host { /// /// A sample implementation of the PSHostRawUserInterface for a console /// application. Members of this class that map trivially to the .NET console /// class are implemented. More complex methods are not implemented and will /// throw a NotImplementedException. /// class MyRawUserInterface : PSHostRawUserInterface { /// /// Get and set the background color of text ro be written. /// This maps pretty directly onto the corresponding .NET Console /// property. /// public override ConsoleColor BackgroundColor { get { return Console.BackgroundColor; } set { Console.BackgroundColor = value; } } /// /// Return the host buffer size adapted from on the .NET Console buffer size /// public override Size BufferSize { get { return new Size(Console.BufferWidth, Console.BufferHeight); } set { Console.SetBufferSize(value.Width, value.Height); } } /// /// This functionality is not currently implemented. The call fails with an exception. /// public override Coordinates CursorPosition { get { throw new NotImplementedException("The method or operation is not implemented."); } set { throw new NotImplementedException("The method or operation is not implemented."); } } /// /// Return the cursor size taken directly from the .NET Console cursor size. /// public override int CursorSize { get { return Console.CursorSize; } set { Console.CursorSize = value; } } /// /// This functionality is not currently implemented. The call simple returns silently. /// public override void FlushInputBuffer() { ; //Do nothing... } /// /// Get and set the foreground color of text ro be written. /// This maps pretty directly onto the corresponding .NET Console /// property. /// public override ConsoleColor ForegroundColor { get { return Console.ForegroundColor; } set { Console.ForegroundColor = value; } } /// /// This functionality is not currently implemented. The call fails with an exception. /// /// Unused /// Returns nothing - call fails. public override BufferCell[,] GetBufferContents(Rectangle rectangle) { throw new NotImplementedException("The method or operation is not implemented."); } /// /// Map directly to the corresponding .NET Console property. /// public override bool KeyAvailable { get { return Console.KeyAvailable; } } /// /// Return the MaxPhysicalWindowSize size adapted from the .NET Console /// LargestWindowWidth and LargestWindowHeight. /// public override Size MaxPhysicalWindowSize { get { return new Size(Console.LargestWindowWidth, Console.LargestWindowHeight); } } /// /// Return the MaxWindowSize size adapted from the .NET Console /// LargestWindowWidth and LargestWindowHeight. /// public override Size MaxWindowSize { get { return new Size(Console.LargestWindowWidth, Console.LargestWindowHeight); } } /// /// This functionality is not currently implemented. The call fails with an exception. /// /// Unused /// Nothing public override KeyInfo ReadKey(ReadKeyOptions options) { throw new NotImplementedException("The method or operation is not implemented."); } /// /// This functionality is not currently implemented. The call fails with an exception. /// /// Unused /// Unused /// Unused /// Unused public override void ScrollBufferContents(Rectangle source, Coordinates destination, Rectangle clip, BufferCell fill) { throw new NotImplementedException("The method or operation is not implemented."); } /// /// This functionality is not currently implemented. The call fails with an exception. /// /// Unused /// Unused public override void SetBufferContents(Coordinates origin, BufferCell[,] contents) { throw new NotImplementedException("The method or operation is not implemented."); } /// /// This functionality is not currently implemented. The call fails with an exception. /// /// Unused /// Unused public override void SetBufferContents(Rectangle rectangle, BufferCell fill) { throw new NotImplementedException("The method or operation is not implemented."); } /// /// Return the window position adapted from the Console window position information. /// public override Coordinates WindowPosition { get { return new Coordinates(Console.WindowLeft, Console.WindowTop); } set { Console.SetWindowPosition(value.X, value.Y); } } /// /// Return the window size adapted from the corresponding .NET Console calls. /// public override Size WindowSize { get { return new Size(Console.WindowWidth, Console.WindowHeight); } set { Console.SetWindowSize(value.Width, value.Height); } } /// /// Mapped to the Console.Title property. /// public override string WindowTitle { get { return Console.Title; } set { Console.Title = value; } } } }