Пример #1
0
 public override void getAttrByXml(XElement xml)
 {
     base.getAttrByXml(xml);
     if (xml.Attribute("Col") != null)
     {
         this._col = XmlHelper.GetInt(xml, "Col");
     }
     if (xml.Attribute("Row") != null)
     {
         this._row = XmlHelper.GetInt(xml, "Row");
     }
     if (xml.Attribute("PadCol") != null)
     {
         this._padCol = XmlHelper.GetInt(xml, "PadCol");
     }
     if (xml.Attribute("PadRow") != null)
     {
         this._padRow = XmlHelper.GetInt(xml, "PadRow");
     }
     if (xml.Attribute("Max") != null)
     {
         this._max = XmlHelper.GetInt(xml, "Max");
     }
     if (xml.Element("RenderItem") != null)
     {
         this._renderItem = UIHelper.CEGenerateViewByXml(xml.Element("RenderItem"), this);
     }
 }
Пример #2
0
 public RenderBase getSelectClickItem(PointF pos, out ClickPosArena arena)
 {
     arena = ClickPosArena.PosCenter;
     //foreach (RenderBase render in childItems)
     //{
     for (int i = childItems.Count - 1; i >= 0; i--)
     {
         RenderBase render = childItems[i];
         RectangleF rect   = render.boxAtParent();
         if (isCanDeepPanel(render))
         {
             PointF     relaPos   = new PointF(pos.X - rect.X, pos.Y - rect.Y);
             RenderBase clickItem = render.getSelectClickItem(relaPos, out arena);
             if (clickItem != null)
             {
                 arena = clickItem.calcClickArena(relaPos);
                 return(clickItem);
             }
         }
         else if (render.isSelect && rect.Contains(pos))
         {
             arena = render.calcClickArena(pos);
             return(render);
         }
     }
     return(null);
 }
Пример #3
0
        public RenderBase getRenderByUniqueName(String uniqueName)
        {
            RenderBase item = null;

            if (this.uniqueName == uniqueName)
            {
                return(this);
            }
            foreach (RenderBase render in childItems)
            {
                if (render.uniqueName == uniqueName)
                {
                    item = render;
                    break;
                }
                if (render is TDPanel)
                {
                    item = (render as TDPanel).getRenderByUniqueName(uniqueName);
                    if (item != null)
                    {
                        break;
                    }
                }
            }
            return(item);
        }
Пример #4
0
 public bool isCanDeepPanel(RenderBase render)
 {
     if (render is TDPanel && (render as TDPanel).panelPath.Length == 0)
     {
         return(true);
     }
     return(false);
 }
Пример #5
0
        public void selectItemByUniqueName(String uniqueName)
        {
            RenderBase render = this.getRenderByUniqueName(uniqueName);

            if (render == null)
            {
                return;
            }
            clearSelectStatus();
            render.isSelect = true;
            this.Invalidate();
            EventManager.RaiserEvent(Constant.PropSelectChange, render, null);
        }
Пример #6
0
 public RenderBase getFirstSelectItem()
 {
     //foreach (RenderBase render in childItems)
     //{
     for (int i = childItems.Count - 1; i >= 0; i--)
     {
         RenderBase render = childItems[i];
         if (render.isSelect)
         {
             return(render);
         }
     }
     return(null);
 }
Пример #7
0
        public RenderScene getRenderScene()
        {
            RenderBase parent = this;

            do
            {
                if (parent is RenderScene)
                {
                    return(parent as RenderScene);
                }
                parent = parent.parent;
            } while (parent != null);
            return(null);
        }
Пример #8
0
        public List <RenderBase> getIntersectItem(RectangleF rect)
        {
            List <RenderBase> items = new List <RenderBase>();

            //foreach (RenderBase render in childItems)
            //{
            for (int i = childItems.Count - 1; i >= 0; i--)
            {
                RenderBase render = childItems[i];
                if (render.isIntersect(rect))
                {
                    items.Add(render);
                }
            }
            return(items);
        }
Пример #9
0
        public bool checkParentPathNest(String checkPath)
        {
            RenderBase parent = this;

            do
            {
                if (parent is TDPanel)
                {
                    if (checkPath == (parent as TDPanel).panelPath)
                    {
                        return(true);
                    }
                }
                parent = parent.parent;
            } while (parent != null);
            return(false);
        }
Пример #10
0
        public static TDPanel GetPanelNode(RenderBase render)
        {
            if (render == null)
            {
                return(null);
            }
            RenderBase parent = render;

            do
            {
                if (parent is TDPanel && !(parent is RenderScene))
                {
                    return(parent as TDPanel);
                }
            } while ((parent = parent.parent) != null);

            return(null);
        }
Пример #11
0
        protected void item_doubleClick(object sender, MouseEventArgs e)
        {
            Point      pos       = getFixPoint(e.X, e.Y);
            RenderBase clickItem = getClickItem(pos, out clickPosArena);

            if (clickItem == null)
            {
                return;
            }
            if (clickItem is TDPage)
            {
                EventManager.RaiserEvent(Constant.PropSelectChange, (clickItem as TDPage).renderItem, null);
            }
            else if (clickItem is TDPanel)
            {
                EventManager.RaiserEvent(Constant.OpenLayoutEvent, this, (clickItem as TDPanel).panelPath);
            }
        }
Пример #12
0
 //pbimg"鼠标移动"事件处理方法
 protected override void item_MouseMove(object sender, MouseEventArgs e)
 {
     Thread.Sleep(30);//减少cpu占用率
     selectCurPos = getFixPoint(e.X, e.Y);
     horCoord.setCurPoint((int)selectCurPos.X);
     verCoord.setCurPoint((int)selectCurPos.Y);
     if (mouseStatus == MouseOpStatus.StatusSelect)
     {
         clearSelectStatus();
         checkSelectStatus(getSelectRect());
     }
     else if (mouseStatus == MouseOpStatus.StatusMove)
     {
         SizeF moveSize = new SizeF(selectCurPos.X - selectStartPos.X, selectCurPos.Y - selectStartPos.Y);
         selectStartPos = selectCurPos;
         foreach (RenderBase render in mouseOpItems)
         {
             render.pos += moveSize;
         }
     }
     else if (mouseStatus == MouseOpStatus.StatusResize)
     {
         SizeF moveSize = new SizeF(selectCurPos.X - selectStartPos.X, selectCurPos.Y - selectStartPos.Y);
         selectStartPos = selectCurPos;
         foreach (RenderBase render in mouseOpItems)
         {
             render.changeMoveSize(clickPosArena, moveSize);
         }
     }
     else
     {
         ClickPosArena arena;
         RenderBase    clickItem = getClickItem(selectCurPos, out arena);
         if (clickItem != null && clickItem.isSelect && arena != ClickPosArena.PosCenter)
         {
             setCursorByArena(arena);
         }
         else
         {
             setCursorByArena(ClickPosArena.PosCenter);
         }
     }
     Refresh();
 }
Пример #13
0
        private void addDragItemType(String type, object controlData, Point p)
        {
            clearSelectStatus();
            //RenderBase clickItem = getClickItem(new PointF(p.X, p.Y), null);
            ClickPosArena arena;
            TDPanel       panel = RenderBase.GetPanelNode(getClickItem(p, out arena));
            RenderBase    item  = null;

            try
            {
                item = UIHelper.CEGenerateItemByName(type, controlData as String, panel == null ? this : panel);
            }
            catch (NestException ex)
            {
                EventManager.RaiserEvent(Constant.StatusInfoChange, this, String.Format("{0} 文件不能嵌套 {1} 文件", this.panelPath, ex.Message));
            }
            if (item != null)
            {
                if (type == Constant.TypeSprite && controlData is String)
                {
                    (item as TDSprite).ImagePath = controlData as String;
                }
                DynamicObj.propDock.SetSelectItem(item);
                if (panel != null)
                {
                    PointF panelPos = panel.startPos();
                    item.pos = new PointF(p.X - panelPos.X, p.Y - panelPos.Y);
                }
                else
                {
                    item.pos = p;
                }
                commandManager.AddCommand(new CommandAdd(this, item));
                checkModifyStatus();
            }

            EventManager.RaiserEvent(Constant.RenderItemChange, this, null);
            Refresh();
        }
Пример #14
0
        public void changePosByUniQue(String srcUni, String destUni)
        {
            RenderBase src  = getRenderByUniqueName(srcUni);
            RenderBase dest = getRenderByUniqueName(destUni);

            if (src == null || dest == null || src is RenderScene || src == dest)
            {
                return;
            }

            TDPanel parent = dest.getParent() as TDPanel;

            if (parent == null)
            {
                return;
            }
            List <RenderBase> childs = new List <RenderBase>();

            foreach (RenderBase child in parent.ChildItems)
            {
                if (child == dest)
                {
                    childs.Add(child);
                    childs.Add(src);
                }
                else if (child != src)
                {
                    childs.Add(child);
                }
            }
            if (src.getParent() != dest.getParent())
            {
                src.removeFromParent();
                src.setParent(dest.getParent());
            }
            parent.ChildItems = childs;
            Invalidate();
        }
Пример #15
0
        public void PasteItemByClip()
        {
            String content = Clipboard.GetData(DataFormats.Text) as String;

            if (content == null)
            {
                return;
            }
            XElement xml = XmlHelper.Parse(content);

            if (xml == null || xml.Name != "Copy")
            {
                return;
            }
            clearSelectStatus();
            foreach (XElement node in xml.Elements("Node"))
            {
                RenderBase render = UIHelper.CEGenerateViewByXml(node, this);
                render.pos      = new PointF(render.pos.X + 5, render.pos.Y + 5);
                render.isSelect = true;
            }
            Invalidate();
        }
Пример #16
0
        public List <RenderBase> getSelectItems()
        {
            List <RenderBase> items = new List <RenderBase>();

            //foreach (RenderBase render in childItems)
            //{
            for (int i = childItems.Count - 1; i >= 0; i--)
            {
                RenderBase render = childItems[i];
                if (render.isSelect)
                {
                    items.Add(render);
                }
                else if (isCanDeepPanel(render))
                {
                    foreach (RenderBase select in render.getSelectItems())
                    {
                        items.Add(select);
                    }
                }
            }
            return(items);
        }
Пример #17
0
        public void execSetLayoutAlign(LayoutAlignType layout)
        {
            mouseOpItems = getSelectItems();
            if (mouseOpItems.Count <= 1)
            {
                return;
            }
            RenderBase        firstSelect = mouseOpItems[0];
            List <RenderBase> opItems     = new List <RenderBase>();

            foreach (RenderBase item in mouseOpItems)
            {
                if (item.getParent() == firstSelect.getParent())
                {
                    opItems.Add(item);
                }
            }
            if (opItems.Count <= 1)
            {
                return;
            }
            recordOriStatus(opItems);
            float      left = 0, centerHor = 0, right = 0, top = 0, centerVer = 0, bottom = 0;
            SizeF      selectSize  = firstSelect.size;
            PointF     selectPoint = firstSelect.pos;//scenePointToRender((int)firstSelect.pos.X, (int)firstSelect.pos.Y);
            RectangleF selectRect  = firstSelect.boxAtParent();

            left      = selectPoint.X;
            centerHor = selectPoint.X + selectSize.Width / 2;
            right     = selectPoint.X + selectSize.Width;
            top       = selectPoint.Y;
            centerVer = selectPoint.Y + selectSize.Height / 2;
            bottom    = selectPoint.Y + selectSize.Height;

            switch (layout)
            {
            case LayoutAlignType.LayoutAlign_Left:
            {
                foreach (RenderBase item in mouseOpItems)
                {
                    RectangleF rect = item.boxAtParent();
                    item.pos = new PointF(item.pos.X + left - rect.X, item.pos.Y);
                }
            }
            break;

            case LayoutAlignType.LayoutAlign_Right:
            {
                foreach (RenderBase item in mouseOpItems)
                {
                    RectangleF rect = item.boxAtParent();
                    item.pos = new PointF(item.pos.X + right - rect.X - rect.Width, item.pos.Y);
                }
            }
            break;

            case LayoutAlignType.LayoutAlign_CenterHor:
            {
                foreach (RenderBase item in mouseOpItems)
                {
                    RectangleF rect = item.boxAtParent();
                    item.pos = new PointF(item.pos.X + centerHor - rect.X - rect.Width / 2, item.pos.Y);
                }
            } break;

            case LayoutAlignType.LayoutAlign_Top:
            {
                foreach (RenderBase item in mouseOpItems)
                {
                    RectangleF rect = item.boxAtParent();
                    item.pos = new PointF(item.pos.X, item.pos.Y + top - rect.Y);
                }
            }
            break;

            case LayoutAlignType.LayoutAlign_Bottom:
            {
                foreach (RenderBase item in mouseOpItems)
                {
                    RectangleF rect = item.boxAtParent();
                    item.pos = new PointF(item.pos.X, item.pos.Y + bottom - rect.Y - rect.Height);
                }
            }
            break;

            case LayoutAlignType.LayoutAlign_CenterVer:
            {
                foreach (RenderBase item in mouseOpItems)
                {
                    RectangleF rect = item.boxAtParent();
                    item.pos = new PointF(item.pos.X, item.pos.Y + centerVer - rect.Y - rect.Height / 2);
                }
            } break;

            default:
                break;
            }
            commandManager.AddCommand(new CommandMoveList(this, mouseOpItems));
        }
Пример #18
0
 public void removeChild(RenderBase child)
 {
     child.parent = null;
     childItems.Remove(child);
 }
Пример #19
0
        protected override void item_MouseDown(object sender, MouseEventArgs e)
        {
            bool isClickControl = (Control.ModifierKeys & Keys.Control) == Keys.Control;
            bool isClickAlt     = (Control.ModifierKeys & Keys.Alt) == Keys.Alt;

            if (e.Button == MouseButtons.Left)
            {
                selectStartPos = selectCurPos = getFixPoint(e.X, e.Y);
                if (isClickControl)
                {
                    RenderBase clickItem = getClickItem(selectStartPos, out clickPosArena);
                    if (clickItem != null)
                    {
                        clickItem.isSelect = !clickItem.isSelect;
                    }
                }
                else
                {
                    RenderBase clickItem = getSelectClickItem(selectStartPos, out clickPosArena);
                    if (clickItem == null || isClickAlt)
                    {
                        clickItem = getClickItem(selectStartPos, out clickPosArena);
                    }
                    if (clickItem != null && clickItem.isSelect && clickPosArena != ClickPosArena.PosCenter)
                    {
                        clearSelectStatus();
                        clickItem.isSelect = true;
                        mouseOpItems.Clear();
                        mouseOpItems.Add(clickItem);
                        mouseStatus = MouseOpStatus.StatusResize;
                        setCursorByArena(clickPosArena);
                    }
                    else if (clickItem != null)
                    {
                        if (clickItem.isSelect)
                        {
                            mouseOpItems = getSelectItems();
                        }
                        else
                        {
                            clearSelectStatus();
                            mouseOpItems.Clear();
                            clickItem.isSelect = true;
                            mouseOpItems.Add(clickItem);
                        }
                        clickItem.raiseSelctChange();
                        mouseStatus = MouseOpStatus.StatusMove;
                    }
                    else
                    {
                        clearSelectStatus();
                        mouseStatus = MouseOpStatus.StatusSelect;
                    }
                }
                Invalidate();
                recordOriStatus(mouseOpItems);
            }
            else if (e.Button == MouseButtons.Right)
            {
                ToolStripMenuItem[] formMenuItemList = new ToolStripMenuItem[6];
                formMenuItemList[0]     = new ToolStripMenuItem("左对齐", null, new EventHandler(this.layoutCallback));
                formMenuItemList[0].Tag = LayoutAlignType.LayoutAlign_Left;
                formMenuItemList[1]     = new ToolStripMenuItem("水平居中对齐", null, new EventHandler(this.layoutCallback));
                formMenuItemList[1].Tag = LayoutAlignType.LayoutAlign_CenterHor;
                formMenuItemList[2]     = new ToolStripMenuItem("右对齐", null, new EventHandler(this.layoutCallback));
                formMenuItemList[2].Tag = LayoutAlignType.LayoutAlign_Right;
                formMenuItemList[3]     = new ToolStripMenuItem("上对齐", null, new EventHandler(this.layoutCallback));
                formMenuItemList[3].Tag = LayoutAlignType.LayoutAlign_Top;
                formMenuItemList[4]     = new ToolStripMenuItem("垂直居中对齐", null, new EventHandler(this.layoutCallback));
                formMenuItemList[4].Tag = LayoutAlignType.LayoutAlign_CenterVer;
                formMenuItemList[5]     = new ToolStripMenuItem("下对齐", null, new EventHandler(this.layoutCallback));
                formMenuItemList[5].Tag = LayoutAlignType.LayoutAlign_Bottom;
                ContextMenuStrip formMenu = new ContextMenuStrip();
                formMenu.Items.AddRange(formMenuItemList);
                this.ContextMenuStrip = formMenu;

                //QMenu* layoutMenu = new QMenu(QStringLiteral("布局对齐"));
                //QAction* layoutLeftAction = layoutMenu->addAction(QStringLiteral("左对齐"));
                //QAction* layoutCenterHorAction = layoutMenu->addAction(QStringLiteral("水平居中对齐"));
                //QAction* layoutRightAction = layoutMenu->addAction(QStringLiteral("右对齐"));
                //layoutMenu->addSeparator();
                //QAction* layoutTopAction = layoutMenu->addAction(QStringLiteral("上对齐"));
                //QAction* layoutCenterVerAction = layoutMenu->addAction(QStringLiteral("垂直居中对齐"));
                //QAction* layoutBottomAction = layoutMenu->addAction(QStringLiteral("下对齐"));
                //menu.addMenu(layoutMenu);
                //layoutMenu->setEnabled(selectItems.size() > 1);

                //QMenu* orderMenu = new QMenu(QStringLiteral("布局顺序"));
                //QAction* orderToTop = orderMenu->addAction(QStringLiteral("移至顶层"));
                //QAction* orderToBottom = orderMenu->addAction(QStringLiteral("移至底层"));
            }
        }
Пример #20
0
 public void addChild(RenderBase child)
 {
     Debug.Assert(child != null && child.parent == null);
     this.childItems.Add(child);
     child.parent = this;
 }
Пример #21
0
 public void setParent(RenderBase parent)
 {
     Debug.Assert(this.parent == null && parent != null);
     parent.addChild(this);
 }