Exemple #1
0
        public bool begin(ref bool closed)
        {
            if (closed == true)
            {
                return(false);
            }

            UI.idStack.push(id);

            if (flags.HasFlag(Flags.Modal))
            {
                makeLastSibling();
            }

            //process the setNextWindow* functions
            if (UI.setNextWindowPositionCondition != 0)
            {
                bool shouldSet = (mySetPositionAllowFlags.HasFlag(UI.setNextWindowPositionCondition));
                if (shouldSet && (UI.setNextWindowPositionValue != UI.theInvalidVec2))
                {
                    setPosition(UI.setNextWindowPositionValue, UI.setNextWindowPositionCondition);
                    UI.setNextWindowPositionCondition = 0;
                    UI.setNextWindowPositionValue     = UI.theInvalidVec2;
                }
            }

            if (UI.setNextWindowSizeCondition != 0)
            {
                bool shouldSet = (mySetSizeAllowFlags.HasFlag(UI.setNextWindowSizeCondition));
                if (shouldSet && (UI.setNextWindowSizeValue != UI.theInvalidVec2))
                {
                    setSize(UI.setNextWindowSizeValue, UI.setNextWindowSizeCondition);
                    UI.setNextWindowSizeCondition = 0;
                    UI.setNextWindowSizeValue     = UI.theInvalidVec2;
                }
            }

            //setup the layout for a window
            beginLayout(Layout.Direction.Vertical);

            //is this the first time we've begun this window?
            if (lastFrameActive != UI.frame)
            {
                lastFrameActive = UI.frame;
                active          = true;
            }

            if (UI.currentWindow != this)
            {
                UI.pushWindow(this);
            }

            //check for collapsing window
            if (flags.HasFlag(Flags.TitleBar) && flags.HasFlag(Flags.Collapsable))
            {
                Rect r = titleBarRect;
                if (UI.myHoveredWindow == this && r.containsPoint(UI.mouse.pos) && UI.mouse.buttons[(int)MouseButton.Left].doubleClicked)
                {
                    myIsCollapsed = !myIsCollapsed;
                }
            }
            else
            {
                myIsCollapsed = false;
            }

            //check for moving window
            UI.keepAliveId(moveId);
            if (UI.activeId == moveId)
            {
                if (UI.mouse.buttonIsDown(MouseButton.Middle) == true)
                {
                    if (flags.HasFlag(Flags.Movable) == true)
                    {
                        myPosition += UI.mouse.delta;
                    }
                    UI.focusWindow(this);
                }
                else
                {
                    UI.activeId = 0;
                }
            }

            drawWindowBackground();

            skipItems = myIsCollapsed;

            drawWindowForeground();
            return(true);
        }
Exemple #2
0
        public bool begin(ref bool closed)
        {
            if (closed == true)
            {
                return(false);
            }

            //is this the first time we've begun this window?
            if (lastFrameActive != ImGui.frame)
            {
                if (flags.HasFlag(Flags.AutoResize))
                {
                    //from the previous frame
                    size = myGroupStack.Peek().mySize + ImGui.style.displayWindowPadding;
                }

                lastFrameActive = ImGui.frame;
                active          = true;
                myGroupStack.Peek().myCursorPos = new Vector2(0, titleBarHeight + menuBarHeight);
                myGroupStack.Peek().mySize      = new Vector2(0, 0);
                myGroupStack.Peek().myLayout    = Layout.Vertical;
            }

            if (ImGui.currentWindow != this)
            {
                ImGui.pushWindow(this);
            }

            //process the setNextWindow* functions
            if (ImGui.setNextWindowPositionCondition != 0)
            {
                bool shouldSet = (mySetPositionAllowFlags.HasFlag(ImGui.setNextWindowPositionCondition));
                if (shouldSet && (ImGui.setNextWindowPositionValue != ImGui.theInvalidVec2))
                {
                    setPosition(ImGui.setNextWindowPositionValue, ImGui.setNextWindowPositionCondition);
                    ImGui.setNextWindowPositionCondition = 0;
                    ImGui.setNextWindowPositionValue     = ImGui.theInvalidVec2;
                }
            }

            if (ImGui.setNextWindowSizeCondition != 0)
            {
                bool shouldSet = (mySetSizeAllowFlags.HasFlag(ImGui.setNextWindowSizeCondition));
                if (shouldSet && (ImGui.setNextWindowSizeValue != ImGui.theInvalidVec2))
                {
                    setSize(ImGui.setNextWindowSizeValue, ImGui.setNextWindowSizeCondition);
                    ImGui.setNextWindowSizeCondition = 0;
                    ImGui.setNextWindowSizeValue     = ImGui.theInvalidVec2;
                }
            }

            //check for collapsing window
            if (flags.HasFlag(Flags.TitleBar) && flags.HasFlag(Flags.Collapsable))
            {
                Rect r = titleBarRect;
                if (ImGui.myHoveredWindow == this && r.containsPoint(ImGui.mouse.pos) && ImGui.mouse.buttonDoubleClicked[(int)MouseButton.Left])
                {
                    myIsCollapsed = !myIsCollapsed;
                }
            }
            else
            {
                myIsCollapsed = false;
            }

            //check for moving window
            ImGui.keepAliveId(moveId);
            if (ImGui.activeId == moveId)
            {
                if (ImGui.mouse.buttonDown[(int)MouseButton.Middle] == true)
                {
                    if (flags.HasFlag(Flags.Movable) == true)
                    {
                        myPosition += ImGui.mouse.posDelta;
                    }
                    ImGui.focusWindow(this);
                }
                else
                {
                    ImGui.activeId = 0;
                }
            }

            drawWindowBackground();

            skipItems = myIsCollapsed;

            return(true);
        }