Beispiel #1
0
        static ModifierKeys ConvertModifiers(Xwt.ModifierKeys s)
        {
            ModifierKeys m = ModifierKeys.None;

            if ((s & Xwt.ModifierKeys.Shift) != 0)
            {
                m |= ModifierKeys.Shift;
            }
            if ((s & Xwt.ModifierKeys.Control) != 0)
            {
                m |= ModifierKeys.Control;
            }
            if ((s & Xwt.ModifierKeys.Alt) != 0)
            {
                m |= ModifierKeys.Alt;
            }
            if ((s & Xwt.ModifierKeys.Command) != 0)
            {
                m |= ModifierKeys.Command;
            }
            if ((s & Xwt.ModifierKeys.Command) != 0)
            {
                m |= ModifierKeys.Command;
            }
            return(m);
        }
Beispiel #2
0
        public LanguageItemWindow(ExtensibleTextEditor ed, Xwt.ModifierKeys modifierState, object result, string errorInformations, object unit)
        {
            string tooltip = errorInformations;

            if (string.IsNullOrEmpty(tooltip) || tooltip == "?")
            {
                IsEmpty = true;
                return;
            }

            var label = new MonoDevelop.Components.FixedWidthWrapLabel()
            {
                Wrap               = Pango.WrapMode.WordChar,
                Indent             = -20,
                BreakOnCamelCasing = true,
                BreakOnPunctuation = true,
                Markup             = tooltip,
            };

            this.BorderWidth = 3;
            Add(label);
            UpdateFont(label);

            EnableTransparencyControl = true;
        }
        public LanguageItemWindow(ExtensibleTextEditor ed, Xwt.ModifierKeys modifierState, object result, string errorInformations, object unit)
        {
            string tooltip = null;

            if (result is UnknownIdentifierResolveResult)
            {
                tooltip = string.Format("error CS0103: The name `{0}' does not exist in the current context", ((UnknownIdentifierResolveResult)result).Identifier);
            }
            else if (result is UnknownMemberResolveResult)
            {
                var ur = (UnknownMemberResolveResult)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 (result != null && ed.TextEditorResolverProvider != null)
            {
                //tooltip = ed.TextEditorResolverProvider.CreateTooltip (unit, result, errorInformations, ambience, modifierState);
                // TODO: Type sysetm conversion. (btw. this isn't required because the analyzer should provide semantic error messages.)
                //				if (result.ResolveErrors.Count > 0) {
                //					StringBuilder sb = new StringBuilder ();
                //					sb.Append (tooltip);
                //					sb.AppendLine ();
                //					sb.AppendLine ();
                //					sb.AppendLine (GettextCatalog.GetPluralString ("Error:", "Errors:", result.ResolveErrors.Count));
                //					for (int i = 0; i < result.ResolveErrors.Count; i++) {
                //						sb.Append ('\t');
                //						sb.Append (result.ResolveErrors[i]);
                //						if (i + 1 < result.ResolveErrors.Count)
                //							sb.AppendLine ();
                //					}
                //					tooltip = sb.ToString ();
                //				}
            }
            else
            {
                tooltip = errorInformations;
            }
            if (string.IsNullOrEmpty(tooltip) || tooltip == "?")
            {
                IsEmpty = true;
                return;
            }

            var label = new MonoDevelop.Components.FixedWidthWrapLabel()
            {
                Wrap               = Pango.WrapMode.WordChar,
                Indent             = -20,
                BreakOnCamelCasing = true,
                BreakOnPunctuation = true,
                Markup             = tooltip,
            };

            this.BorderWidth = 3;
            Add(label);
            UpdateFont(label);

            EnableTransparencyControl = true;
        }
Beispiel #4
0
        bool SendKeyPressed(Xwt.Key key, Xwt.ModifierKeys mask)
        {
            var kargs = new Xwt.KeyEventArgs(key, mask, false, 0);

            if (KeyPressed != null)
            {
                KeyPressed(this, kargs);
            }

            return(kargs.Handled);
        }
        internal bool ProcessKey(Xwt.Key key, Xwt.ModifierKeys state)
        {
            switch (key)
            {
            case Xwt.Key.Up:
                if (state.HasFlag(Xwt.ModifierKeys.Command))
                {
                    goto case Xwt.Key.PageUp;
                }
                if (state.HasFlag(Xwt.ModifierKeys.Control))
                {
                    goto case Xwt.Key.Home;
                }
                SelectItemUp();
                return(true);

            case Xwt.Key.Down:
                if (state.HasFlag(Xwt.ModifierKeys.Command))
                {
                    goto case Xwt.Key.PageDown;
                }
                if (state.HasFlag(Xwt.ModifierKeys.Control))
                {
                    goto case Xwt.Key.End;
                }
                SelectItemDown();
                return(true);

            case (Xwt.Key)Gdk.Key.KP_Page_Down:
            case Xwt.Key.PageDown:
                SelectNextCategory();
                return(true);

            case (Xwt.Key)Gdk.Key.KP_Page_Up:
            case Xwt.Key.PageUp:
                SelectPrevCategory();
                return(true);

            case Xwt.Key.Home:
                SelectFirstCategory();
                return(true);

            case Xwt.Key.End:
                SelectLastCatgory();
                return(true);

            case Xwt.Key.Return:
                OnItemActivated(EventArgs.Empty);
                return(true);
            }
            return(false);
        }
        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);
        }
 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);
     }
 }
Beispiel #8
0
 static Xwt.ModifierKeys TranslateMask(NSEventModifierMask mask)
 {
     Xwt.ModifierKeys xwtMask = Xwt.ModifierKeys.None;
     if (mask.HasFlag(NSEventModifierMask.CommandKeyMask))
     {
         xwtMask |= Xwt.ModifierKeys.Command;
     }
     if (mask.HasFlag(NSEventModifierMask.ControlKeyMask))
     {
         xwtMask |= Xwt.ModifierKeys.Control;
     }
     if (mask.HasFlag(NSEventModifierMask.ShiftKeyMask))
     {
         xwtMask |= Xwt.ModifierKeys.Shift;
     }
     if (mask.HasFlag(NSEventModifierMask.AlternateKeyMask))
     {
         xwtMask |= Xwt.ModifierKeys.Alt;
     }
     return(xwtMask);
 }
Beispiel #9
0
        public virtual void ShowTooltipWindow(TextEditor editor, Control tipWindow, TooltipItem item, Xwt.ModifierKeys modifierState, int mouseX, int mouseY)
        {
            if (tipWindow == null)
            {
                return;
            }

            var tipInfoWindow = ((Gtk.Widget)tipWindow) as TooltipInformationWindow;

            if (tipInfoWindow != null)
            {
                ShowTipInfoWindow(editor, tipInfoWindow, item, modifierState, mouseX, mouseY);
                return;
            }

            var origin = editor.GetContent <ITextEditorImpl> ().GetEditorWindowOrigin();

            int    w;
            double xalign;

            GetRequiredPosition(editor, tipWindow, out w, out xalign);
            w += 10;

            var allocation = GetAllocation(editor);
            int x          = (int)(mouseX + origin.X + allocation.X);
            int y          = (int)(mouseY + origin.Y + allocation.Y);

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

            x -= (int)((double)w * xalign);
            y += 10;

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

            var gtkWindow = (Gtk.Window)tipWindow;
            int h         = gtkWindow.SizeRequest().Height;

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

            gtkWindow.Move(x, y);

            gtkWindow.ShowAll();
        }
Beispiel #10
0
        void ShowTipInfoWindow(TextEditor editor, TooltipInformationWindow tipWindow, TooltipItem item, Xwt.ModifierKeys modifierState, int mouseX, int mouseY)
        {
            Gtk.Widget editorWidget = editor;

            var startLoc = editor.OffsetToLocation(item.Offset);
            var endLoc   = editor.OffsetToLocation(item.EndOffset);
            var p1       = editor.LocationToPoint(startLoc);
            var p2       = editor.LocationToPoint(endLoc);

            int w = (int)(p2.X - p1.X);

            var caret = new Gdk.Rectangle(
                (int)p1.X,
                (int)p1.Y,
                (int)w,
                (int)editor.LineHeight
                );

            tipWindow.ShowPopup(editorWidget, caret, PopupPosition.Top);
        }
Beispiel #11
0
 public virtual Control CreateTooltipWindow(TextEditor editor, DocumentContext ctx, TooltipItem item, int offset, Xwt.ModifierKeys modifierState)
 {
     return(null);
 }
 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);
 }
 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);
 }
        public override Components.Window CreateTooltipWindow(Ide.Editor.TextEditor editor, DocumentContext ctx, TooltipItem item, int offset, Xwt.ModifierKeys modifierState)
        {
            var doc = ctx;

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

            var result = new TooltipInformationWindow();

            result.ShowArrow = true;
            result.AddOverload((TooltipInformation)item.Item);
            result.RepositionWindow();
            return(result);
        }
        public override Window CreateTooltipWindow(TextEditor editor, DocumentContext ctx, TooltipItem item, int offset, Xwt.ModifierKeys modifierState)
        {
            var window = new DebugValueWindow((Gtk.Window)(editor.GetNativeWidget <Gtk.Widget> ()).Toplevel, editor.FileName, editor.OffsetToLocation(offset).Line, DebuggingService.CurrentFrame, (ObjectValue)item.Item, null);

            IdeApp.CommandService.RegisterTopWindow(window);
            return(window);
        }
Beispiel #16
0
 public static KeyDescriptor FromXwt(Xwt.Key key, char c, Xwt.ModifierKeys modifiers)
 {
     return(new KeyDescriptor(ConvertKey(key), c, ConvertModifiers(modifiers), Tuple.Create(key, modifiers)));
 }
Beispiel #17
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);
        }
        public override Control CreateTooltipWindow(TextEditor editor, DocumentContext ctx, TooltipItem item, int offset, Xwt.ModifierKeys modifierState)
        {
            var result = item.Item as Result;

            var window = new LanguageItemWindow(CompileErrorTooltipProvider.GetExtensibleTextEditor(editor), modifierState, null, result.Message, null);

            if (window.IsEmpty)
            {
                return(null);
            }
            return(window);
        }
        public override Window CreateTooltipWindow(TextEditor editor, DocumentContext ctx, TooltipItem item, int offset, Xwt.ModifierKeys modifierState)
        {
            var window = new DebugValueWindow(editor, offset, DebuggingService.CurrentFrame, (ObjectValue)item.Item, null);

            IdeApp.CommandService.RegisterTopWindow(window);
            return(window);
        }
Beispiel #20
0
        public virtual void ShowTooltipWindow(TextEditor editor, Window tipWindow, TooltipItem item, Xwt.ModifierKeys modifierState, int mouseX, int mouseY)
        {
            if (tipWindow == null)
            {
                return;
            }

            TooltipInformationWindow tipInfoWindow = (tipWindow as XwtWindowControl)?.Window as TooltipInformationWindow;

            if (tipInfoWindow != null)
            {
                ShowTipInfoWindow(editor, tipInfoWindow, item, modifierState, mouseX, mouseY);
                return;
            }

            var origin = editor.GetContent <ITextEditorImpl> ().GetEditorWindowOrigin();

            int    w;
            double xalign;

            GetRequiredPosition(editor, tipWindow, out w, out xalign);
            w += 10;

            var allocation = GetAllocation(editor);
            int x          = (int)(mouseX + origin.X + allocation.X);
            int y          = (int)(mouseY + origin.Y + allocation.Y);

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

            x -= (int)((double)w * xalign);
            y += 10;

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

            var xwtWindow = (Xwt.WindowFrame)tipWindow;
            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;
            }

            xwtWindow.Location = new Xwt.Point(x, y);
            var gtkWindow = Xwt.Toolkit.Load(Xwt.ToolkitType.Gtk).GetNativeWindow(xwtWindow) as Gtk.Window;

            if (gtkWindow != null)
            {
                gtkWindow.ShowAll();
            }
            else
            {
                xwtWindow.Show();
            }
        }
Beispiel #21
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));
 }
Beispiel #22
0
        public override void ShowTooltipWindow(TextEditor editor, Components.Window tipWindow, TooltipItem item, Xwt.ModifierKeys modifierState, int mouseX, int mouseY)
        {
            base.ShowTooltipWindow(editor, tipWindow, item, modifierState, mouseX, mouseY);
            var info                      = (TaggedTooltipInformation <CodeActions.CodeActionContainer>)item.Item;
            var sourceEditorView          = editor.GetContent <SourceEditorView> ();
            var codeActionEditorExtension = editor.GetContent <CodeActionEditorExtension> ();
            var loc = editor.OffsetToLocation(info.Tag.Span.Start);

            if (info.Tag?.FloatingWidgetShown == true)
            {
                var point = sourceEditorView.TextEditor.TextArea.LocationToPoint(loc.Line, loc.Column);
                point.Y += (int)editor.GetLineHeight(loc.Line);
                var window = (LanguageItemWindow)tipWindow;
                if (floatingWidget != null)
                {
                    floatingWidget.Destroy();
                    floatingWidget = null;
                }
                floatingWidget = new FloatingQuickFixIconWidget(codeActionEditorExtension, window, sourceEditorView, SmartTagSeverity.ErrorFixes, info.Tag, point);
                sourceEditorView.TextEditor.GdkWindow.GetOrigin(out int ox, out int oy);
                floatingWidget.Move(ox + (int)point.X, oy + (int)(point.Y + 4));
                window.Tag = floatingWidget;
                window.EnterNotifyEvent += delegate {
                    floatingWidget.CancelDestroy();
                };
                window.LeaveNotifyEvent += delegate {
                    floatingWidget.QueueDestroy();
                };
            }
        }
Beispiel #23
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);
        }
Beispiel #24
0
        public virtual void ShowTooltipWindow(TextEditor editor, Window tipWindow, TooltipItem item, Xwt.ModifierKeys modifierState, int mouseX, int mouseY)
        {
            if (tipWindow == null)
            {
                return;
            }

            TooltipInformationWindow tipInfoWindow = (tipWindow as XwtWindowControl)?.Window as TooltipInformationWindow;

            if (tipInfoWindow != null)
            {
                ShowTipInfoWindow(editor, tipInfoWindow, item, modifierState, mouseX, mouseY);
                return;
            }

            var origin = editor.GetContent <ITextEditorImpl> ().GetEditorWindowOrigin();


            var xwtWindow = (Xwt.WindowFrame)tipWindow;

            xwtWindow.Location = CalculateWindowLocation(editor, item, xwtWindow, mouseX, mouseY, origin);

            var gtkWindow = Xwt.Toolkit.Load(Xwt.ToolkitType.Gtk).GetNativeWindow(xwtWindow) as Gtk.Window;

            if (gtkWindow != null)
            {
                gtkWindow.ShowAll();
            }
            else
            {
                xwtWindow.Show();
            }
        }
Beispiel #25
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);
        }
Beispiel #26
0
        public override Window CreateTooltipWindow(TextEditor editor, DocumentContext ctx, TooltipItem item, int offset, Xwt.ModifierKeys modifierState)
        {
            var result = item.Item as List <Result>;

            var sb = new StringBuilder();

            foreach (var r in result)
            {
                var escapedMessage = Ambience.EscapeText(r.Message);
                if (sb.Length > 0)
                {
                    sb.AppendLine();
                }
                if (result.Count > 1)
                {
                    string   severity;
                    HslColor color;
                    switch (r.Level)
                    {
                    case Microsoft.CodeAnalysis.DiagnosticSeverity.Info:
                        severity = GettextCatalog.GetString("Info");
                        editor.Options.GetEditorTheme().TryGetColor(EditorThemeColors.UnderlineSuggestion, out color);
                        break;

                    case Microsoft.CodeAnalysis.DiagnosticSeverity.Warning:
                        severity = GettextCatalog.GetString("Warning");
                        editor.Options.GetEditorTheme().TryGetColor(EditorThemeColors.UnderlineWarning, out color);
                        break;

                    case Microsoft.CodeAnalysis.DiagnosticSeverity.Error:
                        severity = GettextCatalog.GetString("Error");
                        editor.Options.GetEditorTheme().TryGetColor(EditorThemeColors.UnderlineError, out color);
                        break;

                    default:
                        severity = "?";
                        editor.Options.GetEditorTheme().TryGetColor(EditorThemeColors.UnderlineSuggestion, out color);
                        break;
                    }

                    sb.AppendFormat("<span foreground ='{2}'font_weight='bold'>{0}</span>: {1}", severity, escapedMessage, color.ToPangoString());
                }
                else
                {
                    sb.Append(escapedMessage);
                }
            }
            var window = new LanguageItemWindow(CompileErrorTooltipProvider.GetExtensibleTextEditor(editor), modifierState, null, sb.ToString(), null);

            if (window.IsEmpty)
            {
                return(null);
            }
            return(window);
        }
Beispiel #27
0
        public override Window CreateTooltipWindow(TextEditor editor, DocumentContext ctx, TooltipItem item, int offset, Xwt.ModifierKeys modifierState)
        {
            var result = item.Item as TooltipInformation;

            if (result == null)
            {
                return(null);
            }
            var window = new LanguageItemWindow(CompileErrorTooltipProvider.GetExtensibleTextEditor(editor), modifierState, null, result.SignatureMarkup, null);

            window.Destroyed += delegate {
                if (window.Tag is FloatingQuickFixIconWidget widget)
                {
                    widget.QueueDestroy();
                }
            };
            if (window.IsEmpty)
            {
                return(null);
            }
            return(window);
        }
Beispiel #28
0
 public LinkEventArgs(string link, int button, Xwt.ModifierKeys modifierState)
 {
     this.Link          = link;
     this.Button        = button;
     this.ModifierState = modifierState;
 }