// Copyright (c) Microsoft Corporation. // Licensed under the MIT license. import "IMouseWheelListener.idl"; import "IControlSettings.idl"; namespace Microsoft.Terminal.TerminalControl { delegate void TitleChangedEventArgs(String newTitle); delegate void FontSizeChangedEventArgs(Int32 width, Int32 height, Boolean isInitialChange); delegate void ScrollPositionChangedEventArgs(Int32 viewTop, Int32 viewHeight, Int32 bufferLength); // C++/winrt makes it difficult to share this idl between two projects, // Instead, we just pin the uuid and include it in both TermControl and App // If you update this one, please update TerminalApp\IDirectKeyListener.idl. // If you change this interface, please update the guid. // If you press F7 or Alt and get a runtime error, go make sure both copies are the same. [uuid("0ddf4edc-3fda-4dee-97ca-a417ee3dd510")] interface IDirectKeyListener { Boolean OnDirectKeyEvent(UInt32 vkey, UInt8 scanCode, Boolean down); } [flags] enum CopyFormat { HTML = 0x1, RTF = 0x2, All = 0xffffffff }; runtimeclass CopyToClipboardEventArgs { String Text { get; }; String Html { get; }; String Rtf { get; }; Windows.Foundation.IReference Formats { get; }; } runtimeclass PasteFromClipboardEventArgs { void HandleClipboardData(String data); } runtimeclass OpenHyperlinkEventArgs { String Uri { get; }; } [default_interface] runtimeclass TermControl : Windows.UI.Xaml.Controls.UserControl, IDirectKeyListener, IMouseWheelListener { TermControl(Microsoft.Terminal.TerminalControl.IControlSettings settings, Microsoft.Terminal.TerminalConnection.ITerminalConnection connection); static Windows.Foundation.Size GetProposedDimensions(Microsoft.Terminal.TerminalControl.IControlSettings settings, UInt32 dpi); void UpdateSettings(Microsoft.Terminal.TerminalControl.IControlSettings newSettings); Microsoft.Terminal.TerminalControl.IControlSettings Settings { get; }; event TitleChangedEventArgs TitleChanged; event FontSizeChangedEventArgs FontSizeChanged; event Windows.Foundation.TypedEventHandler CopyToClipboard; event Windows.Foundation.TypedEventHandler PasteFromClipboard; event Windows.Foundation.TypedEventHandler OpenHyperlink; event Windows.Foundation.TypedEventHandler WarningBell; event Windows.Foundation.TypedEventHandler Initialized; // This is an event handler forwarder for the underlying connection. // We expose this and ConnectionState here so that it might eventually be data bound. event Windows.Foundation.TypedEventHandler ConnectionStateChanged; Microsoft.Terminal.TerminalConnection.ConnectionState ConnectionState { get; }; String Title { get; }; Boolean CopySelectionToClipboard(Boolean singleLine, Windows.Foundation.IReference formats); void PasteTextFromClipboard(); void Close(); Windows.Foundation.Size CharacterDimensions { get; }; Windows.Foundation.Size MinimumSize { get; }; Single SnapDimensionToGrid(Boolean widthOrHeight, Single dimension); void ScrollViewport(Int32 viewTop); Int32 GetScrollOffset(); Int32 GetViewHeight(); event ScrollPositionChangedEventArgs ScrollPositionChanged; void CreateSearchBoxControl(); void AdjustFontSize(Int32 fontSizeDelta); void ResetFontSize(); void SendInput(String input); void ToggleRetroEffect(); Windows.Foundation.IReference TabColor { get; }; event Windows.Foundation.TypedEventHandler TabColorChanged; } }