private void OnToolTipRequest(object sender, ToolTipRequestEventArgs e) { if (e.InDocument && !e.ToolTipShown) { IExpressionFinder expressionFinder; if (MainForm.IsVisualBasic) { expressionFinder = new VBExpressionFinder(); } else { expressionFinder = new CSharpExpressionFinder(mainForm.parseInformation); } ExpressionResult expression = expressionFinder.FindFullExpression( editor.Text, editor.Document.PositionToOffset(e.LogicalPosition)); if (expression.Region.IsEmpty) { expression.Region = new DomRegion(e.LogicalPosition.Line + 1, e.LogicalPosition.Column + 1); } TextArea textArea = editor.ActiveTextAreaControl.TextArea; NRefactoryResolver resolver = new NRefactoryResolver(mainForm.myProjectContent.Language); ResolveResult rr = resolver.Resolve(expression, mainForm.parseInformation, textArea.MotherTextEditorControl.Text); string toolTipText = GetText(rr); if (toolTipText != null) { e.ShowToolTip(toolTipText); } } }
private void OnToolTipRequest(object sender, ToolTipRequestEventArgs e) { if (e.InDocument == false || e.ToolTipShown == true) { return; } int offset = mEditor.Document.PositionToOffset(e.LogicalPosition); LineSegment line = mEditor.Document.GetLineSegmentForOffset(offset); TextWord word = line.GetWord(e.LogicalPosition.Column); if (word == null) { return; } string lineText = word.Word; if (lineText.Length > 0) { if (TextArea.ToolTipWnd == null) { } e.ShowToolTip(lineText); } }
// was part of Tool Tip Provider void OnToolTipRequest(object sender, ToolTipRequestEventArgs e) { O2Thread.mtaThread( () => { try { if (e.InDocument && !e.ToolTipShown) { var logicalPosition = e.LogicalPosition; // parseSourceCode(CodeCompleteTargetText); ResolveResult rr = resolveLocation(logicalPosition); string toolTipText = GetText(rr); if (toolTipText != null) { e.ShowToolTip(toolTipText); //} //if (toolTipText.valid()) "ToolTipText: {0}".format(toolTipText).info(); } } } catch (Exception ex) { ex.log("in OnToolTipRequest"); } }); }
public override void HandleToolTipRequest(ToolTipRequestEventArgs e) { if (!(IsDebugging && CurrentProcess.IsPaused)) { return; } if (CurrentStackFrame == null) { return; } if (!e.InDocument) { return; } var resolveResult = SD.ParserService.Resolve(e.Editor, e.LogicalPosition, CurrentStackFrame.AppDomain.Compilation); if (resolveResult == null) { return; } if (resolveResult is LocalResolveResult || resolveResult is MemberResolveResult) { string text = ResolveResultPrettyPrinter.Print(resolveResult); Func <Value> getValue = delegate { ExpressionEvaluationVisitor eval = new ExpressionEvaluationVisitor(CurrentStackFrame, EvalThread, CurrentStackFrame.AppDomain.Compilation); return(eval.Convert(resolveResult)); }; try { var rootNode = new ValueNode(ClassBrowserIconService.LocalVariable, text, getValue); e.SetToolTip(new DebuggerTooltipControl(rootNode)); } catch (InvalidOperationException ex) { SD.Log.Warn(ex); } } }
public void HandleToolTipRequest(ToolTipRequestEventArgs args) { if (args.InDocument) { int offset = args.Editor.Document.GetOffset(args.LogicalPosition); FoldingManager foldings = args.Editor.GetService(typeof(FoldingManager)) as FoldingManager; if (foldings != null) { var foldingsAtOffset = foldings.GetFoldingsAt(offset); FoldingSection collapsedSection = foldingsAtOffset.FirstOrDefault(section => section.IsFolded); if (collapsedSection != null) { args.SetToolTip(GetTooltipTextForCollapsedSection(args, collapsedSection)); } } TextMarkerService textMarkerService = args.Editor.GetService(typeof(ITextMarkerService)) as TextMarkerService; if (textMarkerService != null) { var markersAtOffset = textMarkerService.GetMarkersAtOffset(offset); ITextMarker markerWithToolTip = markersAtOffset.FirstOrDefault(marker => marker.ToolTip != null); if (markerWithToolTip != null) { args.SetToolTip(markerWithToolTip.ToolTip); } } } }
public void HandleToolTipRequest(ToolTipRequestEventArgs e) { if (SD.Debugger.IsDebuggerLoaded) { SD.Debugger.HandleToolTipRequest(e); } }
public void HandleToolTipRequest(ToolTipRequestEventArgs args) { if (!args.InDocument) { return; } var offset = _editor.Document.GetOffset(args.LogicalPosition); //FoldingManager foldings = _editor.GetService(typeof(FoldingManager)) as FoldingManager; //if (foldings != null) //{ // var foldingsAtOffset = foldings.GetFoldingsAt(offset); // FoldingSection collapsedSection = foldingsAtOffset.FirstOrDefault(section => section.IsFolded); // if (collapsedSection != null) // { // args.SetToolTip(GetTooltipTextForCollapsedSection(args, collapsedSection)); // } //} var markersAtOffset = _textMarkerService.GetMarkersAtOffset(offset); var markerWithToolTip = markersAtOffset.FirstOrDefault(marker => marker.ToolTip != null); if (markerWithToolTip != null) { args.SetToolTip(markerWithToolTip.ToolTip); } }
/// <summary> /// ツールチップ表示リクエストが発生したとき /// </summary> void ActiveTextArea_ToolTipRequest(object sender, ToolTipRequestEventArgs e) { if (m_useCodeComp == false) { return; //入力補完が無効なときはTipは表示しない } if (e.ToolTipShown) { return; //Tipが表示中は新たに表示しない } if (e.InDocument == false) { return; } string tip = ""; switch (FileType.GetKrkrType(this.FileName)) { case FileType.KrkrType.Kag: tip = KagToolTip.GetText(Document, e.LogicalPosition.Y, e.LogicalPosition.X); break; case FileType.KrkrType.Tjs: //未実装 break; } if (tip != "") { e.ShowToolTip(tip); } }
private static string GetPopupHintText(TextArea textArea, ToolTipRequestEventArgs e) { ICSharpCode.TextEditor.TextLocation logicPos = e.LogicalPosition; IDocument doc = textArea.Document; LineSegment seg = doc.GetLineSegment(logicPos.Y); string FileName = textArea.MotherTextEditorControl.FileName; PascalABCCompiler.Parsers.KeywordKind keyw = PascalABCCompiler.Parsers.KeywordKind.None; if (logicPos.X > seg.Length - 1) { return(null); } //string expr = FindFullExpression(doc.TextContent, seg.Offset + logicPos.X,e.LogicalPosition.Line,e.LogicalPosition.Column); string expr_without_brackets = null; string expr = CodeCompletion.CodeCompletionController.CurrentParser.LanguageInformation.FindExpressionFromAnyPosition(seg.Offset + logicPos.X, doc.TextContent, e.LogicalPosition.Line, e.LogicalPosition.Column, out keyw, out expr_without_brackets); if (expr == null) { expr = expr_without_brackets; } if (expr_without_brackets == null) { return(null); } List <PascalABCCompiler.Errors.Error> Errors = new List <PascalABCCompiler.Errors.Error>(); PascalABCCompiler.SyntaxTree.expression tree = WorkbenchServiceFactory.Workbench.VisualEnvironmentCompiler.StandartCompiler.ParsersController.GetExpression("test" + Path.GetExtension(FileName), expr, Errors, new List <PascalABCCompiler.Errors.CompilerWarning>()); bool header = false; if (tree == null || Errors.Count > 0) { Errors.Clear(); tree = WorkbenchServiceFactory.Workbench.VisualEnvironmentCompiler.StandartCompiler.ParsersController.GetExpression("test" + Path.GetExtension(FileName), expr_without_brackets, Errors, new List <PascalABCCompiler.Errors.CompilerWarning>()); header = true; if (tree == null || Errors.Count > 0) { return(null); } } else { Errors.Clear(); PascalABCCompiler.SyntaxTree.expression tree2 = WorkbenchServiceFactory.Workbench.VisualEnvironmentCompiler.StandartCompiler.ParsersController.GetExpression("test" + Path.GetExtension(FileName), expr_without_brackets, Errors, new List <PascalABCCompiler.Errors.CompilerWarning>()); //header = true; if (tree2 == null || Errors.Count > 0) { return(null); } //if (tree is PascalABCCompiler.SyntaxTree.new_expr && (tree as PascalABCCompiler.SyntaxTree.new_expr).params_list == null) // tree = tree2; } CodeCompletion.DomConverter dconv = (CodeCompletion.DomConverter)CodeCompletion.CodeCompletionController.comp_modules[FileName]; if (dconv == null) { return(null); } return(dconv.GetDescription(tree, FileName, expr_without_brackets, WorkbenchServiceFactory.Workbench.VisualEnvironmentCompiler.StandartCompiler.ParsersController, e.LogicalPosition.Line, e.LogicalPosition.Column, keyw, header)); }
// Tooltip for opcodes and macros private void TextArea_ToolTipRequest(object sender, ToolTipRequestEventArgs e) { if (!e.InDocument) { return; } ToolTipRequest.Show(sourceTab, textEditor.Document, e); }
public static void ToolTipService_TextAreaToolTipRequest(object sender, ToolTipRequestEventArgs e) { if (!VisualPABCSingleton.MainForm.UserOptions.CodeCompletionHint) { return; } if (CodeCompletion.CodeCompletionController.CurrentParser == null) { return; } try { TextArea textArea = sender as TextArea; if (dvw != null && dvw.Description != null) { hideToolTip(); return; } if (e.ToolTipShown && dvw != null) { hideToolTip(); return; } if (e.InDocument) { if (dvw == null) { dvw = new DeclarationWindow(VisualPABCSingleton.MainForm); dvw.Font = new System.Drawing.Font(Constants.CompletionWindowDeclarationViewWindowFontName, dvw.Font.Size); dvw.HideOnClick = true; //dvw.ShowDeclarationViewWindow(); } int ypos = (textArea.Document.GetVisibleLine(e.LogicalPosition.Y) + 1) * textArea.TextView.FontHeight - textArea.VirtualTop.Y; System.Drawing.Point p = new System.Drawing.Point(0, ypos); p = textArea.PointToScreen(p); p.X = Control.MousePosition.X + 3; p.Y += 5; string txt = GetPopupHintText(textArea, e); dvw.Location = choose_location(p, txt); dvw.Description = txt; _hint_hide_d = dvw.Font.Height / 2; _mouse_hint_x = e.MousePosition.X; _mouse_hint_y = e.MousePosition.Y; toolTipVisible = true; } } catch (System.Exception ex) { //VisualPABCSingleton.MainForm.WriteToOutputBox(ex.Message);// ICSharpCode.Core.MessageService.ShowError(ex); } finally { } }
private void TextArea_ToolTipRequest(object sender, ToolTipRequestEventArgs e) { if (!e.InDocument) { return; } var segment = Document.GetLineSegment(e.LogicalPosition.Line); var word = segment.GetWord(e.LogicalPosition.Column); if (word == null || string.IsNullOrEmpty(word.Word)) { return; } string text = word.Word; string tooltip; try { IParserData data = _parserService.GetParserData(text, Settings.Default.CaseSensitive).FirstOrDefault(); if (data == null) { var address = _symbolService.SymbolTable.GetAddressFromLabel(text); tooltip = address == null ? string.Empty : address.Value.ToString(); } else { tooltip = data.Description; } } catch (Exception) { return; } if (string.IsNullOrEmpty(tooltip)) { if (_debuggerService.CurrentDebugger == null) { return; } ushort?regValue = _debuggerService.CurrentDebugger.GetRegisterValue(text); if (!regValue.HasValue) { return; } tooltip = "$" + regValue.Value.ToString("X"); } e.ShowToolTip(tooltip); }
private async Task AsyncToolTipRequest(ToolTipRequestEventArgs arg) { // TODO: consider invoking this with a delay, then showing the tool-tip without one var document = _roslynHost.GetDocument(_viewModel.DocumentId); var info = await _quickInfoProvider.GetItemAsync(document, arg.Position, CancellationToken.None).ConfigureAwait(true); if (info != null) { arg.SetToolTip(info.Create()); } }
/// <summary> /// Gets debugger tooltip information for the specified position. /// A descriptive text for the element or a DebuggerGridControl /// showing its current value (when in debugging mode) can be returned /// through the ToolTipInfo object. /// Returns <c>null</c>, if no tooltip information is available. /// </summary> internal static ToolTipInfo GetToolTipInfo(TextArea textArea, ToolTipRequestEventArgs e) { TextLocation logicPos = e.LogicalPosition; IDocument doc = textArea.Document; IExpressionFinder expressionFinder = ParserService.GetExpressionFinder(textArea.MotherTextEditorControl.FileName); if (expressionFinder == null) { return(null); } LineSegment seg = doc.GetLineSegment(logicPos.Y); if (logicPos.X > seg.Length - 1) { return(null); } string textContent = doc.TextContent; ExpressionResult expressionResult = expressionFinder.FindFullExpression(textContent, seg.Offset + logicPos.X); string expression = (expressionResult.Expression ?? "").Trim(); if (expression.Length > 0) { // Look if it is variable ResolveResult result = ParserService.Resolve(expressionResult, logicPos.Y + 1, logicPos.X + 1, textArea.MotherTextEditorControl.FileName, textContent); bool debuggerCanShowValue; string toolTipText = GetText(result, expression, out debuggerCanShowValue); if (Control.ModifierKeys == Keys.Control) { toolTipText = "expr: " + expressionResult.ToString() + "\n" + toolTipText; debuggerCanShowValue = false; } if (toolTipText != null) { if (debuggerCanShowValue && currentDebugger != null) { return(new ToolTipInfo(currentDebugger.GetTooltipControl(expressionResult.Expression))); } return(new ToolTipInfo(toolTipText)); } } else { #if DEBUG if (Control.ModifierKeys == Keys.Control) { return(new ToolTipInfo("no expr: " + expressionResult.ToString())); } #endif } return(null); }
protected override void OnToolTipRequest(object sender, ToolTipRequestEventArgs e) { if (!e.InDocument || e.LogicalPosition.IsEmpty) { return; } var text = (TextArea)sender; if (text.Document == null) { return; } var lineSegment = text.Document.GetLineSegment(e.LogicalPosition.Line); var lineText = text.Document.GetText(lineSegment); string word = GetWordAtColumn(lineText, e.LogicalPosition.Column); if (word == null) { return; } // register-variable? if (_formatter != null) { string varName = _formatter.GetVariableByRegisterName(word); if (varName != null) { e.ShowToolTip(varName); return; } } // opcode-mnemonic? var opcode = Opcodes.Lookup(word); if (opcode != null) { string toolTip = string.Format("{0}\n\n{1}\n\n{2}", opcode.Syntax, opcode.Arguments, opcode.Description); e.ShowToolTip(toolTip); return; } }
void OnToolTipRequest(object sender, ToolTipRequestEventArgs e) { if (e.InDocument && !e.ToolTipShown) { try { string toolTipText = FToolTipProvider.GetToolTip(Document, e.LogicalPosition); if (toolTipText != null) { e.ShowToolTip(toolTipText); } } catch (Exception) { // Ignore } } }
void TextEditorControl_ToolTipRequest(object sender, ToolTipRequestEventArgs e) { if (!e.InDocument || e.ToolTipShown) { return; } // Get word under cursor TextLocation position = e.LogicalPosition; LineSegment line = this.TextEditorControl.Document.GetLineSegment(position.Y); if (line != null) { TextWord word = line.GetWord(position.X); if (word != null && !String.IsNullOrEmpty(word.Word)) { e.ShowToolTip("Current word: \"" + word.Word + "\"\n" + "\nRow: " + (position.Y + 1) + " Column: " + (position.X + 1)); } } }
void TextArea_ToolTipRequest(object sender, ToolTipRequestEventArgs e) { if (e.ToolTipShown) { return; } if (e.InDocument) { var area = sender as TextArea; var pos = e.LogicalPosition; var doc = area.Document; LineSegment seg = doc.GetLineSegment(pos.Y); var txt = seg.GetWord(pos.X); if (txt != null && !string.IsNullOrEmpty(txt.Word)) { e.ShowToolTip(GetDescription(txt.Word)); } } }
public ToolTipInfo GetToolTipInfo(TextArea textArea, ToolTipRequestEventArgs e) { TextLocation logicPos = e.LogicalPosition; IDocument doc = textArea.Document; if (logicPos.X > doc.GetLineSegment(logicPos.Y).Length - 1) { return(null); } ResourceResolveResult result = ResourceResolverService.Resolve(textArea.MotherTextEditorControl.FileName, doc, logicPos.Y, logicPos.X, null); if (result != null && result.ResourceFileContent != null) { return(new ToolTipInfo(ResourceResolverService.FormatResourceDescription(result.ResourceFileContent, result.Key))); } return(null); }
public void HandleToolTipRequest(ToolTipRequestEventArgs e) { if (!e.InDocument) { return; } Location logicPos = e.LogicalPosition; IDocument doc = e.Editor.Document; if (logicPos.X > doc.GetLine(logicPos.Y).Length) { return; } ResourceResolveResult result = ResourceResolverService.Resolve(e.Editor.FileName, doc, logicPos.Y - 1, logicPos.X - 1, null); if (result != null && result.ResourceFileContent != null) { e.SetToolTip(ResourceResolverService.FormatResourceDescription(result.ResourceFileContent, result.Key)); } }
/// <summary> /// Gets debugger tooltip information for the specified position. /// A descriptive string for the element or a DebuggerTooltipControl /// showing its current value (when in debugging mode) can be returned /// through the ToolTipRequestEventArgs.SetTooltip() method. /// </summary> public static void HandleToolTipRequest(ToolTipRequestEventArgs e) { if (!e.InDocument) { return; } var logicPos = e.LogicalPosition; var doc = (TextDocument)e.Editor.Document; var line = doc.GetLineByNumber(logicPos.Line); if (line.Offset + logicPos.Column >= doc.TextLength) { return; } var c = doc.GetText(line.Offset + logicPos.Column, 1); if (string.IsNullOrEmpty(c) || c == "\n" || c == "\t") { return; } string variable = ParserService.SimpleParseAt(doc.Text, doc.GetOffset(new TextLocation(logicPos.Line, logicPos.Column))); if (currentDebugger == null || !currentDebugger.IsDebugging || !currentDebugger.CanEvaluate) { e.ContentToShow = null; } else { try { e.ContentToShow = currentDebugger.GetTooltipControl(e.LogicalPosition, variable); } catch { return; } } }
public void HandleToolTipRequest(ToolTipRequestEventArgs e) { if (e.ResolveResult == null) { return; } TypeResolveResult trr = e.ResolveResult as TypeResolveResult; MemberResolveResult mrr = e.ResolveResult as MemberResolveResult; LocalResolveResult lrr = e.ResolveResult as LocalResolveResult; if (trr != null && trr.Type.GetDefinition() != null) { e.SetToolTip(CreateTooltip(trr.Type)); } else if (mrr != null) { e.SetToolTip(CreateTooltip(mrr.Member)); } else if (lrr != null) { e.SetToolTip(new FlowDocumentTooltip(XmlDocFormatter.CreateTooltip(lrr.Variable))); } }
public static void Show(TabInfo ti, IDocument document, ToolTipRequestEventArgs args) { if (ColorTheme.CheckColorPosition(document, new TextLocation(args.LogicalPosition.Column, args.LogicalPosition.Line), true)) { return; } string word = TextUtilities.GetWordAt(document, document.PositionToOffset(args.LogicalPosition)); if (word.Length == 0) { return; } if (ti.messages.Count > 0) { int msg; if (int.TryParse(word, out msg) && ti.messages.ContainsKey(msg)) { args.ShowToolTip("\"" + ti.messages[msg] + "\""); return; } } document.TextEditorProperties.BoldFontTipsTile = true; string lookup = ProgramInfo.LookupOpcodesToken(word); // show opcodes help if (lookup == null && ti.parseInfo != null) { lookup = ti.parseInfo.LookupToken(word, ti.filepath, args.LogicalPosition.Line + 1); document.TextEditorProperties.BoldFontTipsTile = false; } if (lookup != null) { args.ShowToolTip(lookup); } }
void OnToolTipRequest(object sender, ToolTipRequestEventArgs e) { if (e.InDocument && !e.ToolTipShown && _xdebugClient.State == XdebugClientState.Break) { ICSharpCode.TextEditor.TextArea area_obj = (ICSharpCode.TextEditor.TextArea)sender; string s = ICSharpCode.TextEditor.Document.TextUtilities.GetWordAt(area_obj.Document, area_obj.Document.PositionToOffset(new Point(e.LogicalPosition.X, e.LogicalPosition.Y))); if (area_obj.Document.GetCharAt(MyFindWordStart(area_obj.Document, area_obj.Document.PositionToOffset(new Point(e.LogicalPosition.X, e.LogicalPosition.Y))) - 1).ToString() == "$") { s = "$" + s; } if (s != "") { Property p = _xdebugClient.GetPropertyValue(s, 0); if (p != null) { e.ShowToolTip(p.Value); } } } }
private void EditorOnToolTipRequest(object sender, ToolTipRequestEventArgs args) { var offset = _document.GetOffset(args.LogicalPosition); //FoldingManager foldings = _editor.GetService(typeof(FoldingManager)) as FoldingManager; //if (foldings != null) //{ // var foldingsAtOffset = foldings.GetFoldingsAt(offset); // FoldingSection collapsedSection = foldingsAtOffset.FirstOrDefault(section => section.IsFolded); // if (collapsedSection != null) // { // args.SetToolTip(GetTooltipTextForCollapsedSection(args, collapsedSection)); // } //} var markersAtOffset = GetMarkersAtOffset(offset); var markerWithToolTip = markersAtOffset.FirstOrDefault(marker => marker.ToolTip != null); if (markerWithToolTip != null) { args.SetToolTip(markerWithToolTip.ToolTip); } }
void TextEditorMouseHover(object sender, MouseEventArgs e) { Debug.Assert(sender == this); ToolTipRequestEventArgs args = new ToolTipRequestEventArgs(this.Adapter); var pos = GetPositionFromPoint(e.GetPosition(this)); args.InDocument = pos.HasValue; if (pos.HasValue) { args.LogicalPosition = AvalonEditDocumentAdapter.ToLocation(pos.Value); } TextMarkerService textMarkerService = this.Adapter.GetService(typeof(ITextMarkerService)) as TextMarkerService; if (args.InDocument && textMarkerService != null) { var markersAtOffset = textMarkerService.GetMarkersAtOffset(args.Editor.Document.PositionToOffset(args.LogicalPosition.Line, args.LogicalPosition.Column)); ITextMarker markerWithToolTip = markersAtOffset.FirstOrDefault(marker => marker.ToolTip != null); if (markerWithToolTip != null) { args.SetToolTip(markerWithToolTip.ToolTip); } } if (!args.Handled) { // if request wasn't handled by a marker, pass it to the ToolTipRequestService ToolTipRequestService.RequestToolTip(args); } if (args.ContentToShow != null) { var contentToShowITooltip = args.ContentToShow as ITooltip; if (contentToShowITooltip != null && contentToShowITooltip.ShowAsPopup) { if (!(args.ContentToShow is UIElement)) { throw new NotSupportedException("Content to show in Popup must be UIElement: " + args.ContentToShow); } if (popup == null) { popup = CreatePopup(); } // if popup was only first level, hovering somewhere else closes it if (TryCloseExistingPopup(false)) { // when popup content decides to close, close the popup contentToShowITooltip.Closed += (closedSender, closedArgs) => { popup.IsOpen = false; }; popup.Child = (UIElement)args.ContentToShow; //ICSharpCode.SharpDevelop.Debugging.DebuggerService.CurrentDebugger.IsProcessRunningChanged SetPopupPosition(popup, e); popup.IsOpen = true; } e.Handled = true; } else { if (toolTip == null) { toolTip = new ToolTip(); toolTip.Closed += ToolTipClosed; } toolTip.PlacementTarget = this; // required for property inheritance if (args.ContentToShow is string) { toolTip.Content = new TextBlock { Text = args.ContentToShow as string, TextWrapping = TextWrapping.Wrap }; } else { toolTip.Content = args.ContentToShow; } toolTip.IsOpen = true; e.Handled = true; } } else { // close popup if mouse hovered over empty area if (popup != null) { e.Handled = true; } TryCloseExistingPopup(false); } }
void TextEditorMouseHover(object sender, MouseEventArgs e) { ToolTipRequestEventArgs args = new ToolTipRequestEventArgs(this.adapter); var pos = adapter.TextEditor.GetPositionFromPoint(e.GetPosition(this)); args.InDocument = pos.HasValue; if (pos.HasValue) { args.LogicalPosition = AvalonEditDocumentAdapter.ToLocation(pos.Value.Location); } if (!args.Handled) { // if request wasn't handled by a marker, pass it to the ToolTipRequestService ToolTipRequestService.RequestToolTip(args); } if (args.ContentToShow != null) { var contentToShowITooltip = args.ContentToShow as ITooltip; if (contentToShowITooltip != null && contentToShowITooltip.ShowAsPopup) { if (!(args.ContentToShow is UIElement)) { throw new NotSupportedException("Content to show in Popup must be UIElement: " + args.ContentToShow); } if (popup == null) { popup = CreatePopup(); } if (TryCloseExistingPopup(false)) { // when popup content decides to close, close the popup contentToShowITooltip.Closed += (closedSender, closedArgs) => { popup.IsOpen = false; }; popup.Child = (UIElement)args.ContentToShow; //ICSharpCode.SharpDevelop.Debugging.DebuggerService.CurrentDebugger.IsProcessRunningChanged SetPopupPosition(popup, e); popup.IsOpen = true; } e.Handled = true; } else { if (toolTip == null) { toolTip = new ToolTip(); toolTip.Closed += delegate { toolTip = null; }; } toolTip.PlacementTarget = this.adapter.TextEditor; // required for property inheritance if (args.ContentToShow is string) { toolTip.Content = new TextBlock { Text = args.ContentToShow as string, TextWrapping = TextWrapping.Wrap }; } else { toolTip.Content = args.ContentToShow; } toolTip.IsOpen = true; e.Handled = true; } } else { // close popup if mouse hovered over empty area if (popup != null) { e.Handled = true; } TryCloseExistingPopup(false); } }
public override void HandleToolTipRequest(ToolTipRequestEventArgs e) { }
/// <summary> /// Gets debugger tooltip information for the specified position. /// A descriptive string for the element or a DebuggerTooltipControl /// showing its current value (when in debugging mode) can be returned /// through the ToolTipRequestEventArgs.SetTooltip() method. /// </summary> public static void HandleToolTipRequest(ToolTipRequestEventArgs e) { if (!e.InDocument) { return; } var logicPos = e.LogicalPosition; var doc = (TextDocument)e.Editor.Document; var line = doc.GetLineByNumber(logicPos.Line); if (line.Offset + logicPos.Column >= doc.TextLength) { return; } var c = doc.GetText(line.Offset + logicPos.Column, 1); if (string.IsNullOrEmpty(c) || c == "\n" || c == "\t") { return; } string variable = ParserService.SimpleParseAt(doc.Text, doc.GetOffset(new TextLocation(logicPos.Line, logicPos.Column))); if (currentDebugger == null || !currentDebugger.IsDebugging || !currentDebugger.CanEvaluate) { e.ContentToShow = null; } else { try { e.ContentToShow = currentDebugger.GetTooltipControl(e.LogicalPosition, variable); } catch { return; } } // FIXME Do proper parsing // // using (var sr = new StringReader(doc.Text)) // { // var parser = new CSharpParser(); // parser.Parse(sr); // // IExpressionFinder expressionFinder = ParserService.GetExpressionFinder(); // if (expressionFinder == null) // return; // var currentLine = doc.GetLine(logicPos.Y); // if (logicPos.X > currentLine.Length) // return; // string textContent = doc.Text; // ExpressionResult expressionResult = expressionFinder.FindFullExpression(textContent, doc.GetOffset(new TextLocation(logicPos.Line, logicPos.Column))); // string expression = (expressionResult.Expression ?? "").Trim(); // if (expression.Length > 0) { // // Look if it is variable // ResolveResult result = ParserService.Resolve(expressionResult, logicPos.Y, logicPos.X, e.Editor.FileName, textContent); // bool debuggerCanShowValue; // string toolTipText = GetText(result, expression, out debuggerCanShowValue); // if (Control.ModifierKeys == Keys.Control) { // toolTipText = "expr: " + expressionResult.ToString() + "\n" + toolTipText; // debuggerCanShowValue = false; // } // if (toolTipText != null) { // if (debuggerCanShowValue && currentDebugger != null) { // object toolTip = currentDebugger.GetTooltipControl(e.LogicalPosition, expressionResult.Expression); // if (toolTip != null) // e.SetToolTip(toolTip); // else // e.SetToolTip(toolTipText); // } else { // e.SetToolTip(toolTipText); // } // } // } // else { // #if DEBUG // if (Control.ModifierKeys == Keys.Control) { // e.SetToolTip("no expr: " + expressionResult.ToString()); // } // #endif // } // } }
public void HandleToolTipRequest(ToolTipRequestEventArgs e) { DebuggerService.HandleToolTipRequest(e); }