Exemplo n.º 1
0
 private Tooltip()
 {
     tooltipWindow = new Window(new WindowOptions {
         Style      = WindowStyle.Borderless,
         FixedSize  = false,
         Visible    = false,
         Centered   = false,
         ToolWindow = true,
     });
     tooltip = new ThemedFrame {
         LayoutCell = new LayoutCell {
             Ignore = true
         },
         Layout = new StackLayout(),
         Nodes  =
         {
             (tooltipText = new ThemedSimpleText {
                 Padding  = new Thickness(4)
             }),
         },
         Presenter = new ThemedFramePresenter(Color4.Yellow.Transparentify(0.8f), Color4.Black)
     };
     rootWidget = new ThemedInvalidableWindowWidget(tooltipWindow)
     {
         Padding = new Thickness(8),
         Layout  = new VBoxLayout(),
         Nodes   =
         {
             tooltip
         }
     };
 }
Exemplo n.º 2
0
        internal static void Decorate(CommonEditBox eb)
        {
            var tw = eb.TextWidget;

            ThemedSimpleText.Decorate(tw);
            tw.ForceUncutText  = false;
            eb.MinSize         = Theme.Metrics.DefaultEditBoxSize;
            eb.MaxHeight       = eb.MinHeight;
            tw.Localizable     = false;
            tw.TrimWhitespaces = false;
            tw.OverflowMode    = TextOverflowMode.Ignore;
            tw.Padding         = Theme.Metrics.ControlsPadding;
            tw.VAlignment      = VAlignment.Center;

            var editorParams = new EditorParams {
                MaxLines          = 1, Scroll = eb.ScrollView,
                OffsetContextMenu = p => p + new Vector2(1f, tw.FontHeight + 1f),
                SelectAllOnFocus  = true
            };

            eb.Editor = new Editor(tw, editorParams, eb, eb.ScrollWidget);
            var vc = new VerticalLineCaret {
                Color = Theme.Colors.TextCaret
            };

            eb.Updated += delta => {
                vc.Width = eb.Editor.OverwriteMode && !eb.Editor.HasSelection() ?
                           tw.Font.Chars.Get(eb.Editor.CurrentChar(), tw.FontHeight)?.Width ?? 5f : 0f;
                if (eb.IsMouseOverThisOrDescendant() && WidgetContext.Current.MouseCursor == MouseCursor.Default)
                {
                    var rect = new Rectangle {
                        A = tw.ContentPosition,
                        B = tw.ContentPosition + tw.ContentSize,
                    };
                    if (rect.Contains(tw.LocalMousePosition()))
                    {
                        WidgetContext.Current.MouseCursor = MouseCursor.IBeam;
                    }
                }
            };
            new CaretDisplay(
                tw, eb.Editor.CaretPos, new CaretParams {
                CaretPresenter = vc
            });
            new SelectionPresenter(
                tw, eb.Editor.SelectionStart, eb.Editor.SelectionEnd,
                new SelectionParams {
                Padding      = Thickness.Zero,
                OutlineColor = Theme.Colors.TextSelection,
                Color        = Theme.Colors.TextSelection
            });

            eb.TabTravesable = new TabTraversable();
            eb.CompoundPresenter.Add(new ThemedFramePresenter(Theme.Colors.WhiteBackground, Theme.Colors.ControlBorder));
            eb.CompoundPostPresenter.Add(new Theme.KeyboardFocusBorderPresenter());
            eb.CompoundPostPresenter.Add(new Theme.MouseHoverBorderPresenter());
            eb.LateTasks.Add(Theme.MouseHoverInvalidationTask(eb));
        }
Exemplo n.º 3
0
        public void Append(string text)
        {
            var        lastLine            = lines.Count > 0 ? lines[lines.Count - 1] : null;
            SimpleText lastNonSentinelLine = null;

            if (SquashDuplicateLines)
            {
                lastNonSentinelLine = lines.Count > 1 ? lines[lines.Count - 2] : null;
            }
            var newLines = text.Split('\n');

            for (int i = 0; i < newLines.Length; i++)
            {
                var l = newLines[i];
                if (SquashDuplicateLines)
                {
                    if (lastNonSentinelLine != null && lastNonSentinelLine.Text == l)
                    {
                        lastNonSentinelLine.Components.Get <ThemedTextView.TextLineMultiplicity>().Multiplicity++;
                        lastNonSentinelLine.Invalidate();
                        //TODO: invalidate window only if it isn't docked
                        (GetRoot() as WindowWidget)?.Window.Invalidate();
                        continue;
                    }
                }
                if (lastLine != null)
                {
                    lastLine.Text += l;
                    if (SquashDuplicateLines)
                    {
                        lastNonSentinelLine = lastLine;
                    }
                    lastLine = null;
                }
                else
                {
                    var line = new ThemedSimpleText(l)
                    {
                        TrimWhitespaces = TrimWhitespaces
                    };
                    line.TextProcessor += ProcessTextLine;
                    line.Components.Add(new TextLineMultiplicity());
                    lines.Add(line);
                    Behaviour.Content.AddNode(line);
                }
            }
        }
Exemplo n.º 4
0
        public ThemedDropDownList()
        {
            MinSize       = Theme.Metrics.DefaultButtonSize;
            MaxHeight     = Theme.Metrics.DefaultButtonSize.Y;
            TabTravesable = new TabTraversable();
            var text = new ThemedSimpleText {
                Id         = "TextWidget",
                VAlignment = VAlignment.Center,
            };

            CompoundPresenter.Add(new DropDownListPresenter(this));
            PostPresenter = new Theme.MouseHoverBorderPresenter();
            LateTasks.Add(Theme.MouseHoverInvalidationTask(this));
            Padding = Theme.Metrics.ControlsPadding;
            AddNode(text);
            text.ExpandToContainerWithAnchors();
            text.X     += 4;
            text.Width -= DropDownListPresenter.IconWidth + 4;
        }