/// <summary> /// Creates the popup. /// </summary> /// <param name="span">The span.</param> /// <param name="text">The text.</param> /// <param name="viewportSize">Size of the viewport.</param> /// <returns></returns> private TranslatePopup CreatePopup(SnapshotSpan span, string text, Size viewportSize) { var popup = new TranslatePopup(span, text, viewportSize); AttachEventPopup(popup); return(popup); }
/// <summary> /// Attaches the popup. /// </summary> /// <param name="popup">The popup.</param> private void AttachPopup(TranslatePopup popup) { var span = popup.Span.GetSpan(_view.TextSnapshot); var g = _view.TextViewLines.GetMarkerGeometry(span); if (g != null) { Canvas.SetLeft(popup, g.Bounds.BottomLeft.X); Canvas.SetTop(popup, g.Bounds.BottomLeft.Y); _layer.AddAdornment(span, null, popup); } }
/// <summary> /// Translates the specified text. /// </summary> /// <param name="span">The span.</param> /// <param name="text">The text.</param> public void Translate(SnapshotSpan span, string text) { //Get viewport size var viewportSize = new Size(_view.ViewportWidth, _view.ViewportHeight); //Close popup if exist if (_popup != null) { _popup.Close(); } //Create new popup _popup = CreatePopup(span, text, viewportSize); //Attach popup AttachPopup(_popup); //Focus _popup.Focus(); }
/// <summary> /// Detaches the event popup. /// </summary> /// <param name="popup">The popup.</param> private void DetachEventPopup(TranslatePopup popup) { popup.OnClosed -= PopupClosed; }
/// <summary> /// Attaches the event popup. /// </summary> /// <param name="popup">The popup.</param> private void AttachEventPopup(TranslatePopup popup) { popup.OnClosed += PopupClosed; }