コード例 #1
0
ファイル: AutoComplete.cs プロジェクト: bradparks/tni-unity
        public override RCMenuItem[] OnGatherRCMenuItems()
        {
            List <RCMenuItem> items = new List <RCMenuItem>();

            if (!isEnabled)
            {
                return(items.ToArray());
            }

            TooltipItem ttItem = editor.syntaxRule.GetTooltipItem(editor.ScreenSpaceToCursorSpace(editor.windowMousePos));

            if (ttItem == null)
            {
                return(items.ToArray());
            }
            if (ttItem.item == null)
            {
                return(items.ToArray());
            }

            if (!ttItem.item.hasDeclaredPosition)
            {
                return(items.ToArray());
            }


            Vector2 pos = ttItem.item.declaredPosition;

            RCMenuItem item = new RCMenuItem("Go To Declaration", GoToDeclaration, new System.Object[] { pos });

            //item.SetCallback(GoToDeclaration);
            items.Add(item);

            return(items.ToArray());
        }
コード例 #2
0
        private TooltipContent DrawItem(GameTime gameTime, RenderEnv env, TooltipItem item)
        {
            var     blocks  = new List <TextBlock>();
            Vector2 size    = Vector2.Zero;
            Vector2 current = Vector2.Zero;

            if (!string.IsNullOrEmpty(item.Title))
            {
                bool hasDesc   = !string.IsNullOrEmpty(item.Desc) || !string.IsNullOrEmpty(item.ItemEU);
                var  titleFont = hasDesc ? env.Fonts.TooltipTitleFont : env.Fonts.TooltipContentFont;
                blocks.Add(PrepareTextLine(titleFont, item.Title, ref current, Color.White, ref size.X));
            }
            if (!string.IsNullOrEmpty(item.Desc))
            {
                blocks.Add(PrepareTextLine(env.Fonts.TooltipContentFont, item.Desc, ref current, Color.White, ref size.X));
            }
            if (!string.IsNullOrEmpty(item.ItemEU))
            {
                blocks.Add(PrepareTextLine(env.Fonts.TooltipContentFont, item.ItemEU, ref current, Color.White, ref size.X));
            }

            size.Y = current.Y;
            return(new TooltipContent()
            {
                blocks = blocks, size = size
            });
        }
コード例 #3
0
ファイル: AutoComplete.cs プロジェクト: bradparks/tni-unity
 public void ShowToolTip(TooltipItem[] items)
 {
     showTooltip                = true;
     tooltipSingle              = null;
     tooltipMethodOverloads     = items;
     tooltipMethodOverloadIndex = 0;
     wantsTooltipRectUpdate     = true;
 }
コード例 #4
0
ファイル: AutoComplete.cs プロジェクト: bradparks/tni-unity
 public void ShowToolTip(TooltipItem item)
 {
     showTooltip                = true;
     tooltipSingle              = item;
     tooltipMethodOverloads     = new TooltipItem[0];
     tooltipMethodOverloadIndex = 0;
     wantsTooltipRectUpdate     = true;
 }
コード例 #5
0
		public override Control CreateTooltipWindow (TextEditor editor, DocumentContext ctx, TooltipItem item, int offset, Xwt.ModifierKeys modifierState)
		{
			foreach (var pseg in projection.ProjectedSegments) {
				if (pseg.ContainsOriginal (offset)) {
					return projectedTooltipProvider.CreateTooltipWindow (projection.ProjectedEditor, projection.ProjectedContext, item, pseg.FromOriginalToProjected (offset), modifierState);
				}
			}
			return null;
		}
コード例 #6
0
        /// <summary>
        /// Tooltip
        /// </summary>
        /// <param name="texturePool"></param>
        /// <param name="farmFrameParent"></param>
        /// <param name="tooltip"></param>
        /// <param name="device"></param>
        /// <returns></returns>
        public static TooltipItem CreateTooltipFromProperty(TexturePool texturePool, WzSubProperty farmFrameParent, ToolTipInstance tooltip, GraphicsDevice device)
        {
            // Wz frames
            System.Drawing.Bitmap c     = ((WzCanvasProperty)farmFrameParent?["c"])?.GetLinkedWzCanvasBitmap();
            System.Drawing.Bitmap cover = ((WzCanvasProperty)farmFrameParent?["cover"])?.GetLinkedWzCanvasBitmap();
            System.Drawing.Bitmap e     = ((WzCanvasProperty)farmFrameParent?["e"])?.GetLinkedWzCanvasBitmap();
            System.Drawing.Bitmap n     = ((WzCanvasProperty)farmFrameParent?["n"])?.GetLinkedWzCanvasBitmap();
            System.Drawing.Bitmap s     = ((WzCanvasProperty)farmFrameParent?["s"])?.GetLinkedWzCanvasBitmap();
            System.Drawing.Bitmap w     = ((WzCanvasProperty)farmFrameParent?["w"])?.GetLinkedWzCanvasBitmap();
            System.Drawing.Bitmap ne    = ((WzCanvasProperty)farmFrameParent?["ne"])?.GetLinkedWzCanvasBitmap(); // top right
            System.Drawing.Bitmap nw    = ((WzCanvasProperty)farmFrameParent?["nw"])?.GetLinkedWzCanvasBitmap(); // top left
            System.Drawing.Bitmap se    = ((WzCanvasProperty)farmFrameParent?["se"])?.GetLinkedWzCanvasBitmap(); // bottom right
            System.Drawing.Bitmap sw    = ((WzCanvasProperty)farmFrameParent?["sw"])?.GetLinkedWzCanvasBitmap(); // bottom left


            // tooltip property
            string title = tooltip.Title;
            string desc  = tooltip.Desc;

            string renderText = string.Format("{0}{1}{2}", title, Environment.NewLine, desc);

            // Constants
            const string TOOLTIP_FONT     = "Arial";
            const float  TOOLTIP_FONTSIZE = 9.25f; // thankie willified, ya'll be remembered forever here <3

            //System.Drawing.Color color_bgFill = System.Drawing.Color.FromArgb(230, 17, 54, 82); // pre V patch (dark blue theme used post-bb), leave this here in case someone needs it
            System.Drawing.Color color_bgFill     = System.Drawing.Color.FromArgb(255, 17, 17, 17); // post V patch (dark black theme used), use color picker on paint via image extracted from WZ if you need to get it
            System.Drawing.Color color_foreGround = System.Drawing.Color.White;
            const int            WIDTH_PADDING    = 10;
            const int            HEIGHT_PADDING   = 6;

            // Create
            using (System.Drawing.Font font = new System.Drawing.Font(TOOLTIP_FONT, TOOLTIP_FONTSIZE))
            {
                System.Drawing.Graphics graphics_dummy = System.Drawing.Graphics.FromImage(new System.Drawing.Bitmap(1, 1)); // dummy image just to get the Graphics object for measuring string
                System.Drawing.SizeF    tooltipSize    = graphics_dummy.MeasureString(renderText, font);

                int effective_width  = (int)tooltipSize.Width + WIDTH_PADDING;
                int effective_height = (int)tooltipSize.Height + HEIGHT_PADDING;

                System.Drawing.Bitmap bmp_tooltip = new System.Drawing.Bitmap(effective_width, effective_height);
                using (System.Drawing.Graphics graphics = System.Drawing.Graphics.FromImage(bmp_tooltip))
                {
                    // Frames and background
                    UIFrameHelper.DrawUIFrame(graphics, color_bgFill, ne, nw, se, sw, e, w, n, s, c, effective_width, effective_height);

                    // Text
                    graphics.DrawString(renderText, font, new System.Drawing.SolidBrush(color_foreGround), WIDTH_PADDING / 2, HEIGHT_PADDING / 2);
                    graphics.Flush();
                }
                IDXObject   dxObj = new DXObject(tooltip.X, tooltip.Y, bmp_tooltip.ToTexture2D(device), 0);
                TooltipItem item  = new TooltipItem(tooltip, dxObj);

                return(item);
            }
        }
        public void Dispose()
        {
            var disposableProvider = provider as IDisposable;

            if (disposableProvider != null)
            {
                disposableProvider.Dispose();
            }
            lastWrappedItem   = null;
            lastUnwrappedItem = null;
        }
コード例 #8
0
        public override TooltipItem GetItem(Mono.TextEditor.TextEditor editor, int offset)
        {
            var doc = IdeApp.Workbench.ActiveDocument;

            if (doc == null || doc.ParsedDocument == null)
            {
                return(null);
            }
            var unit = doc.ParsedDocument.GetAst <SyntaxTree> ();

            if (unit == null)
            {
                return(null);
            }

            var file = doc.ParsedDocument.ParsedFile as CSharpUnresolvedFile;

            if (file == null)
            {
                return(null);
            }

            ResolveResult result;
            AstNode       node;
            var           loc = editor.OffsetToLocation(offset);

            if (!doc.TryResolveAt(loc, out result, out node))
            {
                if (node is CSharpTokenNode)
                {
                    int startOffset2 = editor.LocationToOffset(node.StartLocation);
                    int endOffset2   = editor.LocationToOffset(node.EndLocation);

                    return(new TooltipItem(new ToolTipData(unit, result, node, null), startOffset2, endOffset2 - startOffset2));
                }
                return(null);
            }
            if (node == lastNode)
            {
                return(lastResult);
            }
            var resolver = new CSharpAstResolver(doc.Compilation, unit, file);

            resolver.ApplyNavigator(new NodeListResolveVisitorNavigator(node), CancellationToken.None);

            var hoverNode = node.GetNodeAt(loc) ?? node;

            int startOffset = editor.LocationToOffset(hoverNode.StartLocation);
            int endOffset   = editor.LocationToOffset(hoverNode.EndLocation);

            return(lastResult = new TooltipItem(new ToolTipData(unit, result, node, resolver), startOffset, endOffset - startOffset));
        }
        public override Window CreateTooltipWindow(
            TextEditor editor,
            DocumentContext ctx,
            TooltipItem item,
            int offset,
            Xwt.ModifierKeys modifierState)
        {
            var result = new TooltipInformationWindow();

            result.ShowArrow = true;
            result.AddOverload((TooltipInformation)item.Item);
            result.RepositionWindow();

            return(result);
        }
コード例 #10
0
ファイル: AutoComplete.cs プロジェクト: bradparks/tni-unity
        private void DrawToolTip()
        {
            //GUIStyle bgStyle = skin.GetStyle("Background");
            GUIStyle tooltipStyle = skin.GetStyle("ToolTip");
            //GUIStyle itemSelectedStyle = skin.GetStyle("ItemSelected");
            GUIStyle shadowStyle = editor.editorWindow.skin.GetStyle("DropShadow");

            Rect clipRect = editor.textEditorNoScrollBarRect;

            clipRect.x += editor.rect.x;
            clipRect.y += editor.rect.y;
            GUI.BeginGroup(clipRect);

            if (shadowStyle != null)
            {
                GUI.Box(tooltipRect, "", shadowStyle);
            }

            TooltipItem tooltip = currentTooltip;

            GUIContent content  = new GUIContent(tooltipText);
            Rect       iconRect = new Rect(0, 0, 0, 0);
            Texture2D  icon     = null;

            if (tooltip != null && tooltip.item != null)
            {
                icon = editor.editorWindow.theme.GetLanguageIcon(tooltip.item.GetLanguageIconName());
                if (icon != null)
                {
                    content.image   = Theme.invisible16x16Tex;
                    iconRect.width  = icon.width;
                    iconRect.height = icon.height;
                    float iconHeightDif = tooltipRect.height - iconRect.height;
                    iconRect.x  = tooltipRect.x;
                    iconRect.y  = tooltipRect.y;
                    iconRect.y += iconHeightDif * 0.5f;
                    iconRect.x += tooltipStyle.padding.left;
                }
            }

            GUI.Box(tooltipRect, content, tooltipStyle);
            if (icon)
            {
                GUI.DrawTexture(iconRect, icon, ScaleMode.ScaleToFit, true);
            }

            GUI.EndGroup();
        }
コード例 #11
0
        protected override Xwt.Point CalculateWindowLocation(TextEditor editor, TooltipItem item, Xwt.WindowFrame xwtWindow, int mouseX, int mouseY, Xwt.Point origin)
        {
            int    w;
            double xalign;

            GetRequiredPosition(editor, xwtWindow, out w, out xalign);
            w += 10;
            var allocation = GetAllocation(editor);

            var info = (TaggedTooltipInformation <CodeActions.CodeActionContainer>)item.Item;
            var loc  = editor.OffsetToLocation(info.Tag.Span.Start);
            var p    = editor.LocationToPoint(loc);
            var view = editor.GetContent <SourceEditorView> ();
            int x    = (int)(p.X + origin.X + allocation.X + xPadding);
            int y    = (int)(p.Y + view.TextEditor.GetLineHeight(loc.Line) + origin.Y + allocation.Y + yPadding);

            Gtk.Widget widget   = editor;
            var        geometry = widget.Screen.GetUsableMonitorGeometry(widget.Screen.GetMonitorAtPoint(x, y));

            if (x + w >= geometry.X + geometry.Width)
            {
                x = geometry.X + geometry.Width - w;
            }
            if (x < geometry.Left)
            {
                x = geometry.Left;
            }

            if (info.Tag?.FloatingWidgetShown == true)
            {
                x += windowSize;
            }

            int h = (int)xwtWindow.Size.Height;

            if (y + h >= geometry.Y + geometry.Height)
            {
                y = geometry.Y + geometry.Height - h;
            }
            if (y < geometry.Top)
            {
                y = geometry.Top;
            }

            return(new Xwt.Point(x, y));
        }
コード例 #12
0
        public override void ShowTooltipWindow(TextEditor editor, Control tipWindow, TooltipItem item, Xwt.ModifierKeys modifierState, int mouseX, int mouseY)
        {
            var location   = editor.OffsetToLocation(item.Offset);
            var point      = editor.LocationToPoint(location);
            int lineHeight = (int)editor.LineHeight;
            int y          = (int)point.Y;

            // find the top of the line that the mouse is hovering over
            while (y + lineHeight < mouseY)
            {
                y += lineHeight;
            }

            var caret = new Gdk.Rectangle(mouseX, y, 1, lineHeight);

            tooltip = (DebugValueWindow)tipWindow;
            tooltip.ShowPopup(editor, caret, PopupPosition.TopLeft);
        }
 public override void ShowTooltipWindow(
     TextEditor editor,
     Window tipWindow,
     TooltipItem item,
     Xwt.ModifierKeys modifierState,
     int mouseX,
     int mouseY)
 {
     if (item.Offset == -1)
     {
         var tooltipWindow = (TooltipInformationWindow)tipWindow;
         ShowTooltipWindowAtMouseLocation(editor, tooltipWindow, mouseX, mouseY);
     }
     else
     {
         base.ShowTooltipWindow(editor, tipWindow, item, modifierState, mouseX, mouseY);
     }
 }
コード例 #14
0
ファイル: MapData.cs プロジェクト: zhaoyang90/WzComparerR2
        private void LoadTooltip(Wz_Node tooltipNode)
        {
            Func <Wz_Node, Rectangle> getRect = (node) =>
            {
                int x1 = node.Nodes["x1"].GetValueEx <int>(0);
                int x2 = node.Nodes["x2"].GetValueEx <int>(0);
                int y1 = node.Nodes["y1"].GetValueEx <int>(0);
                int y2 = node.Nodes["y2"].GetValueEx <int>(0);
                return(new Rectangle(x1, y1, x2 - x1, y2 - y1));
            };

            var tooltipDescNode = PluginManager.FindWz("String/ToolTipHelp.img/Mapobject/" + this.ID);

            for (int i = 0; ; i++)
            {
                var rectNode = tooltipNode.Nodes[i.ToString()];
                var charNode = tooltipNode.Nodes[i + "char"];
                if (rectNode != null)
                {
                    var item = new TooltipItem();
                    item.Name  = i.ToString();
                    item.Index = i;
                    item.Rect  = getRect(rectNode);
                    if (charNode != null)
                    {
                        item.CharRect = getRect(charNode);
                    }

                    var descNode = tooltipDescNode?.Nodes[i.ToString()];
                    if (descNode != null)
                    {
                        item.Title  = descNode.Nodes["Title"].GetValueEx <string>(null);
                        item.Desc   = descNode.Nodes["Desc"].GetValueEx <string>(null);
                        item.ItemEU = descNode.Nodes["ItemEU"].GetValueEx <string>(null);
                    }

                    this.Tooltips.Add(item);
                }
                else
                {
                    break;
                }
            }
        }
コード例 #15
0
ファイル: AutoComplete.cs プロジェクト: bradparks/tni-unity
        private void StartShowTooltipActual(System.Object context)
        {
            try {
                System.Object[] contextArray        = (System.Object[])context;
                Vector2         pos                 = (Vector2)contextArray[0];
                bool            showMethodOverloads = (bool)contextArray[1];

                if (showMethodOverloads)
                {
                    CompletionMethod[] methods = editor.syntaxRule.GetMethodOverloads(pos);
                    TooltipItem[]      items   = new TooltipItem[methods.Length];
                    for (int i = 0; i < methods.Length; i++)
                    {
                        items[i] = new TooltipItem(methods[i]);
                    }
                    if (cancelTooltip)
                    {
                        HideToolTip();
                    }
                    else
                    {
                        ShowToolTip(items);
                    }
                }
                else
                {
                    TooltipItem tItem = editor.syntaxRule.GetTooltipItem(pos);
                    if (cancelTooltip)
                    {
                        HideToolTip();
                    }
                    else
                    {
                        ShowToolTip(tItem);
                    }
                }
                editor.editorWindow.Repaint();
                cancelTooltip = false;
            }
            finally {
                //UIDEThreadPool.UnregisterThread("AutoComplete_UpdateTooltip");
            }
        }
コード例 #16
0
        public override async Task <TooltipItem> GetItem(MonoTextEditor editor, int offset, CancellationToken token = default(CancellationToken))
        {
            var wrappedEditor = WrapEditor(editor);

            if (wrappedEditor == null)
            {
                return(null);
            }
            var doc = IdeApp.Workbench.ActiveDocument;

            if (doc == null)
            {
                return(null);
            }
            var task = provider.GetItem(wrappedEditor, doc, offset, token);

            if (task == null)
            {
                LoggingService.LogWarning("Tooltip provider " + provider + " gave back null on GetItem (should always return a non null task).");
                return(null);
            }
            var item = await task;

            if (item == null)
            {
                return(null);
            }
            if (lastUnwrappedItem != null)
            {
                if (lastUnwrappedItem.Offset == item.Offset &&
                    lastUnwrappedItem.Length == item.Length &&
                    lastUnwrappedItem.Item.Equals(item.Item))
                {
                    return(lastWrappedItem);
                }
            }
            lastUnwrappedItem = item;
            return(lastWrappedItem = new TooltipItem(item.Item, item.Offset, item.Length));
        }
コード例 #17
0
ファイル: Root.cs プロジェクト: Blecki/GemGui
        public void ShowTooltip(Point Where, String Tip)
        {
            if (TooltipItem != null)
            {
                DestroyWidget(TooltipItem);
            }

            TooltipItem = ConstructWidget(new Widget
            {
                Text     = Tip,
                Border   = "border-thin",
                Font     = TooltipFont,
                TextSize = TooltipTextSize
            });
            var bestSize = TooltipItem.GetBestSize();

            TooltipItem.Rect = new Rectangle(
                Where.X + (MousePointer == null ? 0 : GetTileSheet(MousePointer.Sheet).TileWidth) + 2,
                Where.Y, bestSize.X, bestSize.Y);

            RootItem.AddChild(TooltipItem);
        }
コード例 #18
0
        public void ShowTooltip(Point Where, Widget Tip)
        {
            if (TooltipItem != null && TooltipItem.Text == Tip.Text)
            {
                //TODO (Mklingen): handle the case where the tooltip is the same,
                // but the widget has moved.

                var       myBestSize = TooltipItem.GetBestSize();
                Rectangle myRect     = new Rectangle(
                    // ?? Why are we assuming the tooltip is being opened at the mouse position?
                    Where.X + (MousePointer == null ? 0 : GetTileSheet(MousePointer.Sheet).TileWidth) + 2,
                    Where.Y + (MousePointer == null ? 0 : GetTileSheet(MousePointer.Sheet).TileWidth) + 2, myBestSize.X, myBestSize.Y);

                if (myRect == TooltipItem.Rect)
                {
                    return;
                }
            }

            RootItem.AddChild(Tip);

            var       bestSize = Tip.GetBestSize();
            Rectangle rect     = new Rectangle(
                // ?? Why are we assuming the tooltip is being opened at the mouse position?
                Where.X + (MousePointer == null ? 0 : GetTileSheet(MousePointer.Sheet).TileWidth) + 2,
                Where.Y + (MousePointer == null ? 0 : GetTileSheet(MousePointer.Sheet).TileWidth) + 2, bestSize.X, bestSize.Y);

            rect     = MathFunctions.SnapRect(rect, RenderData.VirtualScreen);
            Tip.Rect = rect;

            if (TooltipItem != null)
            {
                DestroyWidget(TooltipItem);
            }

            TooltipItem = Tip;
        }
コード例 #19
0
        /// <summary>
        /// Initializes the <see cref="AmountManager"/> by assigning the references to the popup, max toggle, and amount input field.
        /// </summary>
        /// <param name="lockPRPSManager"> The active LockPRPSManager. </param>
        /// <param name="maxToggle"> The toggle for switching between maximum sendable amount and the entered amount. </param>
        /// <param name="amountInputField"> The input field used for entering the sendable amount. </param>
        /// <param name="prpsBalanceText"> Text component used for displaying the current purpose balance. </param>
        /// <param name="dubiBalanceText"> Text component used for displaying the current dubi balance. </param>
        /// <param name="dubiRewardText"> Text component used for displaying the dubi reward. </param>
        /// <param name="buttonTooltipItem"> The lock button tooltip item </param>
        public AmountManager(
            LockPRPSManager lockPRPSManager,
            Toggle maxToggle,
            HopeInputField amountInputField,
            TMP_Text prpsBalanceText,
            TMP_Text dubiBalanceText,
            TMP_Text dubiRewardText,
            TooltipItem buttonTooltipItem)
        {
            this.lockPRPSManager   = lockPRPSManager;
            this.maxToggle         = maxToggle;
            this.amountInputField  = amountInputField;
            this.prpsBalanceText   = prpsBalanceText;
            this.dubiBalanceText   = dubiBalanceText;
            this.dubiRewardText    = dubiRewardText;
            this.buttonTooltipItem = buttonTooltipItem;

            lockPRPSManager.OnAmountsUpdated += BalancesUpdated;

            maxToggle.AddToggleListener(MaxChanged);
            amountInputField.OnInputUpdated += _ => AmountFieldChanged();

            BalancesUpdated();
        }
コード例 #20
0
		public override void ShowTooltipWindow (TextEditor editor, Control tipWindow, TooltipItem item, Xwt.ModifierKeys modifierState, int mouseX, int mouseY)
		{
			projectedTooltipProvider.ShowTooltipWindow (editor, tipWindow, item, modifierState, mouseX, mouseY);
		}
コード例 #21
0
        public override Window CreateTooltipWindow(TextEditor editor, DocumentContext ctx, TooltipItem item, int offset, Xwt.ModifierKeys modifierState)
        {
            if (item.Item is InfoItem infoItem)
            {
                if (infoItem.Packages != null)
                {
                    return(CreatePackageWindow(infoItem));
                }
                return(CreateItemWindow(infoItem));
            }

            if (item.Item is IEnumerable <NavigationAnnotation> annotations)
            {
                var navs   = annotations.ToList();
                var markup = DescriptionMarkupFormatter.GetNavigationMarkup(navs);
                return(new LabelTooltipWindow(markup));
            }

            return(null);
        }
コード例 #22
0
        public override Window CreateTooltipWindow(TextEditor editor, DocumentContext ctx, TooltipItem item, int offset, Xwt.ModifierKeys modifierState)
        {
            var result = new LanguageItemWindow(GetExtensibleTextEditor(editor), modifierState, null, (string)item.Item, null);

            if (result.IsEmpty)
            {
                return(null);
            }
            return(result);
        }
コード例 #23
0
        public override Gtk.Window ShowTooltipWindow(TextEditor editor, int offset, Gdk.ModifierType modifierState, int mouseX, int mouseY, TooltipItem item)
        {
            var titem = (ToolTipData)item.Item;

            if (lastNode != null && lastWindow != null && lastWindow.IsRealized && titem.Node != null && lastNode == titem.Node)
            {
                return(lastWindow);
            }

            DestroyLastTooltipWindow();

            var tipWindow = CreateTooltipWindow(editor, offset, modifierState, item) as TooltipInformationWindow;

            if (tipWindow == null)
            {
                return(null);
            }

            var hoverNode      = titem.Node.GetNodeAt(editor.OffsetToLocation(offset)) ?? titem.Node;
            var p1             = editor.LocationToPoint(hoverNode.StartLocation);
            var p2             = editor.LocationToPoint(hoverNode.EndLocation);
            var positionWidget = editor.TextArea;
            var caret          = new Gdk.Rectangle((int)p1.X - positionWidget.Allocation.X, (int)p2.Y - positionWidget.Allocation.Y, (int)(p2.X - p1.X), (int)editor.LineHeight);

            tipWindow.ShowPopup(positionWidget, caret, PopupPosition.Top);
            tipWindow.EnterNotifyEvent += delegate {
                editor.HideTooltip(false);
            };
            lastWindow = tipWindow;
            lastNode   = titem.Node;
            return(tipWindow);
        }
コード例 #24
0
        protected override Gtk.Window CreateTooltipWindow(TextEditor editor, int offset, Gdk.ModifierType modifierState, TooltipItem item)
        {
            //create a message string from all the results
            var  results = (IList <Result>)item.Item;
            var  sb      = new StringBuilder();
            bool first   = false;

            foreach (var r in results)
            {
                if (!first)
                {
                    first = true;
                }
                else
                {
                    sb.AppendLine();
                }
                sb.Append(r.Level.ToString());
                sb.Append(": ");
                sb.Append(r.Message);
            }

            //FIXME: use a nicer, more specialized tooltip window, with results formatting and hints about
            // commands and stuff
            var win = new LanguageItemWindow((ExtensibleTextEditor)editor, modifierState, null, sb.ToString(), null);

            if (win.IsEmpty)
            {
                return(null);
            }
            return(win);
        }
 public Gtk.Window CreateTooltipWindow(Mono.TextEditor.TextEditor editor, int offset, Gdk.ModifierType modifierState, TooltipItem item)
 {
     return(new DebugValueWindow(editor, offset, DebuggingService.CurrentFrame, (ObjectValue)item.Item, null));
 }
コード例 #26
0
 public override Control CreateTooltipWindow(TextEditor editor, DocumentContext ctx, TooltipItem item, int offset, Xwt.ModifierKeys modifierState)
 {
     return(new DebugValueWindow(editor, offset, DebuggingService.CurrentFrame, (ObjectValue)item.Item, null));
 }
コード例 #27
0
        public Gtk.Window CreateTooltipWindow(Mono.TextEditor.TextEditor editor, int offset, Gdk.ModifierType modifierState, TooltipItem item)
        {
            var doc = IdeApp.Workbench.ActiveDocument;

            if (doc == null)
            {
                return(null);
            }

            var    titem   = (ToolTipData)item.Item;
            string tooltip = null;

            if (titem.Result is UnknownIdentifierResolveResult)
            {
                tooltip = string.Format("error CS0103: The name `{0}' does not exist in the current context", ((UnknownIdentifierResolveResult)titem.Result).Identifier);
            }
            else if (titem.Result is UnknownMemberResolveResult)
            {
                var ur = (UnknownMemberResolveResult)titem.Result;
                if (ur.TargetType.Kind != TypeKind.Unknown)
                {
                    tooltip = string.Format("error CS0117: `{0}' does not contain a definition for `{1}'", ur.TargetType.FullName, ur.MemberName);
                }
            }
            else if (titem.Result.IsError)
            {
                tooltip = "Resolve error.";
            }
            else if (titem.Result != null)
            {
                var ev = new ErrorVisitor(titem.Resolver);
                if (titem.Node is AstType && titem.Node.Parent is VariableDeclarationStatement && titem.Node.GetText() == "var")
                {
                    titem.Node.Parent.AcceptVisitor(ev);
                }
                if (ev.ErrorResolveResult != null)
                {
                    Console.WriteLine(ev.ErrorResolveResult);
                    tooltip = string.Format("Error while resolving: '{0}'", ev.ErrorNode.GetText());
                }
                else
                {
                    tooltip = CreateTooltip(titem.Result, offset, ambience);
                }
            }
            else
            {
                return(null);
            }


            if (lastResult != null && lastWindow.IsRealized &&
                titem.Result != null && lastResult.Type.Equals(titem.Result.Type))
            {
                return(lastWindow);
            }
            var result = new LanguageItemWindow(tooltip);

            lastWindow = result;
            lastResult = titem.Result;
            if (result.IsEmpty)
            {
                return(null);
            }
            return(result);
        }
コード例 #28
0
        public Gtk.Window CreateTooltipWindow(Mono.TextEditor.TextEditor editor, int offset, Gdk.ModifierType modifierState, TooltipItem item)
        {
            LanguageItemWindow result = new LanguageItemWindow((ExtensibleTextEditor)editor, modifierState, null, (string)item.Item, null);

            if (result.IsEmpty)
            {
                return(null);
            }
            return(result);
        }
コード例 #29
0
 public void ShowToolTip(TooltipItem[] items)
 {
     showTooltip = true;
     tooltipSingle = null;
     tooltipMethodOverloads = items;
     tooltipMethodOverloadIndex = 0;
     wantsTooltipRectUpdate = true;
 }
コード例 #30
0
 public void ShowToolTip(TooltipItem item)
 {
     showTooltip = true;
     tooltipSingle = item;
     tooltipMethodOverloads = new TooltipItem[0];
     tooltipMethodOverloadIndex = 0;
     wantsTooltipRectUpdate = true;
 }
コード例 #31
0
        private void StartShowTooltipActual(System.Object context)
        {
            try {
                System.Object[] contextArray = (System.Object[])context;
                Vector2 pos = (Vector2)contextArray[0];
                bool showMethodOverloads = (bool)contextArray[1];

                if (showMethodOverloads) {
                    CompletionMethod[] methods = editor.syntaxRule.GetMethodOverloads(pos);
                    TooltipItem[] items = new TooltipItem[methods.Length];
                    for (int i = 0; i < methods.Length; i++) {
                        items[i] = new TooltipItem(methods[i]);
                    }
                    if (cancelTooltip) {
                        HideToolTip();
                    }
                    else {
                        ShowToolTip(items);
                    }
                }
                else {
                    TooltipItem tItem = editor.syntaxRule.GetTooltipItem(pos);
                    if (cancelTooltip) {
                        HideToolTip();
                    }
                    else {
                        ShowToolTip(tItem);
                    }
                }
                editor.editorWindow.Repaint();
                cancelTooltip = false;
            }
            finally {
                //UIDEThreadPool.UnregisterThread("AutoComplete_UpdateTooltip");
            }
        }
コード例 #32
0
 public override Window CreateTooltipWindow(TextEditor editor, DocumentContext ctx, TooltipItem item, int offset, Xwt.ModifierKeys modifierState)
 {
     foreach (var pseg in projection.ProjectedSegments)
     {
         if (pseg.ContainsOriginal(offset))
         {
             return(projectedTooltipProvider.CreateTooltipWindow(projection.ProjectedEditor, projection.ProjectedContext, item, pseg.FromOriginalToProjected(offset), modifierState));
         }
     }
     return(null);
 }
コード例 #33
0
        public override TooltipItem GetTooltipItem(Vector2 pos)
        {
            Vector2 originalPos = pos;
            if (parserInterface.lastSourceFile == null) {
                Reparse();
            }

            pos = editor.doc.GoToEndOfWord(pos,1);
            Vector2 endWordPos = editor.doc.IncrementPosition(pos,-1);
            pos = editor.doc.GoToEndOfWhitespace(pos,1);

            ExpressionInfo result = new ExpressionInfo();
            result.startPosition = pos;
            result.endPosition = pos;
            result.initialized = true;

            char nextChar = editor.doc.GetCharAt(pos);
            bool isBeginGeneric = nextChar == '<';
            if (useUnityscript) {
                Vector2 charAfterPos = editor.doc.GoToEndOfWhitespace(editor.doc.IncrementPosition(pos,1),1);
                char charAfter = editor.doc.GetCharAt(charAfterPos);
                if (nextChar == '.' && charAfter == '<') {
                    pos = charAfterPos;
                    nextChar = editor.doc.GetCharAt(pos);
                    isBeginGeneric = true;
                }
            }
            //GameObject go;

            //go.GetComponent<Vector3>();
            if (isBeginGeneric) {
                result.startPosition = pos;
                result.endPosition = pos;
                ExpressionResolver.editor = editor;
                result = ExpressionResolver.CountToExpressionEnd(result,1,ExpressionBracketType.Generic);

                pos = result.endPosition;
                pos = editor.doc.IncrementPosition(pos,1);
                pos = editor.doc.GoToEndOfWhitespace(pos,1);

                result.startPosition = pos;
                result.endPosition = pos;
                nextChar = editor.doc.GetCharAt(pos);
            }

            bool isFunction = false;
            if (nextChar == '(') {
                ExpressionResolver.editor = editor;
                result = ExpressionResolver.CountToExpressionEnd(result,1,ExpressionBracketType.Expression);
                pos = result.endPosition;
                nextChar = editor.doc.GetCharAt(pos);
                isFunction = true;
            }

            if (!isFunction) {
                pos = endWordPos;
            }

            //Debug.Log(nextChar+" "+editor.doc.GetCharAt(endWordPos));

            string str = editor.syntaxRule.ResolveExpressionAt(pos,-1);
            if (useUnityscript) {
                str = str.Replace(".<","<");
            }
            //Debug.Log(str);

            ChainResolver sigChainResolver = new ChainResolver(editor,originalPos);
            ChainItem item = null;
            item = sigChainResolver.ResolveChain(str,false);

            TooltipItem tooltipItem = null;
            if (item != null) {
                if (item.finalLinkType != null) {
                    tooltipItem = new TooltipItem(item.finalLinkType.Name+" "+item.finalLink.name);
                    tooltipItem.clrType = item.finalLinkType;
                }

                if (item.finalLink.completionItem != null) {
                    tooltipItem = new TooltipItem(item.finalLink.completionItem);
                }

            }

            return tooltipItem;
        }
コード例 #34
0
        public Gtk.Window CreateTooltipWindow(Mono.TextEditor.TextEditor editor, int offset, Gdk.ModifierType modifierState, TooltipItem item)
        {
            var ed  = (ExtensibleTextEditor)editor;
            var doc = ed.ParsedDocument;

            if (doc == null)
            {
                return(null);
            }

            var resolveResult = (ResolveResult)item.Item;

            if (lastResult != null && lastWindow.IsRealized &&
                resolveResult != null && lastResult.Type.Equals(resolveResult.Type))
            {
                return(lastWindow);
            }
            var result = new LanguageItemWindow(ed, modifierState, resolveResult, null, doc.ParsedFile);

            lastWindow = result;
            lastResult = resolveResult;
            if (result.IsEmpty)
            {
                return(null);
            }
            return(result);
        }
コード例 #35
0
        public override Control CreateTooltipWindow(TextEditor editor, DocumentContext ctx, TooltipItem item, int offset, Gdk.ModifierType modifierState)
        {
            var doc = ctx;

            if (doc == null)
            {
                return(null);
            }

            var titem = (ToolTipData)item.Item;

            var tooltipInformation = CreateTooltip(titem, editor, ctx, offset, modifierState);

            if (tooltipInformation == null || string.IsNullOrEmpty(tooltipInformation.SignatureMarkup))
            {
                return(null);
            }
            var result = new TooltipInformationWindow();

            result.ShowArrow = true;
            result.AddOverload(tooltipInformation);
            result.RepositionWindow();
            return(result);
        }
コード例 #36
0
 public override void ShowTooltipWindow(TextEditor editor, Window tipWindow, TooltipItem item, Xwt.ModifierKeys modifierState, int mouseX, int mouseY)
 {
     projectedTooltipProvider.ShowTooltipWindow(editor, tipWindow, item, modifierState, mouseX, mouseY);
 }