// Copyright (c) Microsoft Corporation. // Licensed under the MIT license. import "IMouseWheelListener.idl"; import "IControlSettings.idl"; namespace Microsoft.Terminal.Control { 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; }; } enum NoticeLevel { Debug = 10, Info = 20, Warning = 30, Error = 40, }; runtimeclass NoticeEventArgs { NoticeLevel Level { get; }; String Message { get; }; } [default_interface] runtimeclass TermControl : Windows.UI.Xaml.Controls.UserControl, IDirectKeyListener, IMouseWheelListener { TermControl(Microsoft.Terminal.Control.IControlSettings settings, Microsoft.Terminal.TerminalConnection.ITerminalConnection connection); static Windows.Foundation.Size GetProposedDimensions(Microsoft.Terminal.Control.IControlSettings settings, UInt32 dpi); void UpdateSettings(); Microsoft.Terminal.Control.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 SetTaskbarProgress; event Windows.Foundation.TypedEventHandler RaiseNotice; event Windows.Foundation.TypedEventHandler WarningBell; event Windows.Foundation.TypedEventHandler HidePointerCursor; event Windows.Foundation.TypedEventHandler RestorePointerCursor; 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 SearchMatch(Boolean goForward); void AdjustFontSize(Int32 fontSizeDelta); void ResetFontSize(); void ToggleShaderEffects(); void SendInput(String input); void TaskbarProgressChanged(); UInt64 TaskbarState { get; }; UInt64 TaskbarProgress { get; }; String WorkingDirectory { get; }; Windows.Foundation.IReference TabColor { get; }; event Windows.Foundation.TypedEventHandler TabColorChanged; Boolean ReadOnly { get; }; void ToggleReadOnly(); event Windows.Foundation.TypedEventHandler ReadOnlyChanged; event Windows.Foundation.TypedEventHandler FocusFollowMouseRequested; } }