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); } }
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); }
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); }
public bool isCanDeepPanel(RenderBase render) { if (render is TDPanel && (render as TDPanel).panelPath.Length == 0) { return(true); } return(false); }
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); }
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); }
public RenderScene getRenderScene() { RenderBase parent = this; do { if (parent is RenderScene) { return(parent as RenderScene); } parent = parent.parent; } while (parent != null); return(null); }
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); }
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); }
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); }
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); } }
//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(); }
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(); }
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(); }
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(); }
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); }
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)); }
public void removeChild(RenderBase child) { child.parent = null; childItems.Remove(child); }
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("移至底层")); } }
public void addChild(RenderBase child) { Debug.Assert(child != null && child.parent == null); this.childItems.Add(child); child.parent = this; }
public void setParent(RenderBase parent) { Debug.Assert(this.parent == null && parent != null); parent.addChild(this); }