Ejemplo n.º 1
0
 public virtual void SetFocus(ImGui source, Rect rect)
 {
     this.source = source;
     sourceRect  = rect;
     contents.Rebuild();
     owner?.Rebuild();
 }
Ejemplo n.º 2
0
        private void DeleteSelected()
        {
            AddEditHistory(EditHistoryEvent.Delete);
            var pos = Math.Min(selectionAnchor, caret);

            text            = text.Remove(pos, Math.Abs(selectionAnchor - caret));
            selectionAnchor = caret = pos;
            gui.Rebuild();
        }
Ejemplo n.º 3
0
        public static bool BuildSlider(this ImGui gui, float value, out float newValue, float width = 10f)
        {
            var sliderRect  = gui.AllocateRect(width, 2f, RectAlignment.Full);
            var handleStart = (sliderRect.Width - 1f) * value;
            var handleRect  = new Rect(sliderRect.X + handleStart, sliderRect.Y, 1f, sliderRect.Height);
            var update      = false;

            newValue = value;

            switch (gui.action)
            {
            case ImGuiAction.Build:
                gui.DrawRectangle(handleRect, gui.IsMouseOverOrDown(sliderRect) ? SchemeColor.Background : SchemeColor.PureBackground, RectangleBorder.Thin);
                sliderRect.Y     += (sliderRect.Height - 0.3f) / 2f;
                sliderRect.Height = 0.3f;
                gui.DrawRectangle(sliderRect, SchemeColor.Grey);
                break;

            case ImGuiAction.MouseMove:
                if (gui.IsMouseDown(sliderRect))
                {
                    update = true;
                }
                else
                {
                    gui.ConsumeMouseOver(sliderRect, RenderingUtils.cursorHand);
                }
                break;

            case ImGuiAction.MouseDown:
                if (gui.IsMouseOver(sliderRect))
                {
                    gui.ConsumeMouseDown(sliderRect);
                    update = true;
                }
                break;
            }

            if (!update)
            {
                return(false);
            }
            var positionX = (gui.mousePosition.X - sliderRect.X - 0.5f) / (sliderRect.Width - 1f);

            newValue = MathUtils.Clamp(positionX, 0f, 1f);
            gui.Rebuild();
            return(true);
        }
Ejemplo n.º 4
0
        private void BuildHeaderResizer(ImGui gui, DataColumn <TData> column, Rect rect)
        {
            switch (gui.action)
            {
            case ImGuiAction.Build:
                var center = rect.X + rect.Width * 0.5f;
                if (gui.IsMouseDown(rect, SDL.SDL_BUTTON_LEFT))
                {
                    var unclampedWidth = gui.mousePosition.X - rect.Center.X + column.width;
                    var clampedWidth   = MathUtils.Clamp(unclampedWidth, column.minWidth, column.maxWidth);
                    center = center - column.width + clampedWidth;
                }
                var viewRect = new Rect(center - 0.1f, rect.Y, 0.2f, rect.Height);
                gui.DrawRectangle(viewRect, SchemeColor.GreyAlt);
                break;

            case ImGuiAction.MouseMove:
                gui.ConsumeMouseOver(rect, RenderingUtils.cursorHorizontalResize);
                if (gui.IsMouseDown(rect, SDL.SDL_BUTTON_LEFT))
                {
                    gui.Rebuild();
                }
                break;

            case ImGuiAction.MouseDown:
                gui.ConsumeMouseDown(rect, cursor: RenderingUtils.cursorHorizontalResize);
                break;

            case ImGuiAction.MouseUp:
                if (gui.ConsumeMouseUp(rect, false))
                {
                    var unclampedWidth = gui.mousePosition.X - rect.Center.X + column.width;
                    column.width = MathUtils.Clamp(unclampedWidth, column.minWidth, column.maxWidth);
                    contentGui?.Rebuild();
                }
                break;
            }
        }
Ejemplo n.º 5
0
 internal virtual void WindowResize()
 {
     rootGui.Rebuild();
 }