public void ClearCanvas() { itemsList.Clear(); dragItemNode = null; hoverItemNode = null; hoverRoute = null; diagramRouter.Clear(); }
public void ResetCanvas() { itemsList = new List <CanvasItemData>(); dragItemNode = null; hoverItemNode = null; hoverRoute = null; diagramRouter = new DiagramRouter(); }
// function to add items to the list and create an item in the inventory public void AddItem(int itemID) { // for i to the size of the inventory for (int i = 0; i < inv.Count; i++) { // if the slot has space create an item there if (inv[i].Name == null) { inv[i] = CanvasItemData.CreateItem(itemID); Debug.Log("Added Item: " + inv[i].Name); return; } } }
/// <summary> /// Returns last selected canvas item /// </summary> public CanvasItem GetLastFocusItem() { if (itemsList.Count == 0) { return(null); } CanvasItemData item = itemsList.Last.Value; if (item.Focused) { return(item.Item); } return(null); }
/// <summary> /// Do not call it directly /// </summary> public void AddSingleCanvasItem(CanvasItem item) { diagramRouter.AddItem(item); CanvasItemData itemData = new CanvasItemData(item, SizeGripMouseEntered, SizeGripMouseLeft); itemsData[item] = itemData; itemsList.Add(itemData); item.RedrawNeeded += HandleRedraw; item.LayoutChanged += HandleItemLayoutChange; item.PositionChanging += HandleItemPositionChange; item.SizeChanging += HandleItemSizeChange; LayoutChanged(this, EventArgs.Empty); }
public void SetFocusedCanvasItem(CanvasItem ci) { CanvasItemData value = null; if (itemsData.TryGetValue(ci, out value)) { LinkedListNode <CanvasItemData> itemNode = new LinkedListNode <CanvasItemData>(value); SetItemFocus(itemNode); ClearAllItemsFocus(itemNode); if (itemsList.Last.Value != itemNode.Value) { itemsList.Remove(itemNode.Value); itemsList.AddLast(itemNode.Value); } } }
private void PictureBox1MouseClick(object sender, MouseEventArgs e) { PointF pos = new PointF(e.X / zoom, e.Y / zoom); lastMouseClickPosition = pos; CanvasItemData itemNode = FindCanvasItemNode(pos); if (itemNode != null) { itemNode.Item.HandleMouseClick(pos); if (itemNode.Focused) { if (itemNode.JustGainedFocus) { itemNode.JustGainedFocus = false; } else if (itemNode.Item.StartEditing()) { Control ec = itemNode.Item.GetEditingControl(); if (ec != null) { //TODO - refactor this damn thing... why couldn't they make the "Scale" scale the font as well? ec.Scale(new SizeF(zoom, zoom)); Font ecf = ec.Font; ec.Font = new Font(ecf.FontFamily, ecf.Size * zoom, ecf.Style, ec.Font.Unit, ecf.GdiCharSet, ec.Font.GdiVerticalFont); ec.Hide(); ec.VisibleChanged += delegate { if (!ec.Visible) { ec.Font = ecf; } }; panel1.Controls.Add(ec); ec.Top -= panel1.VerticalScroll.Value; ec.Left -= panel1.HorizontalScroll.Value; ec.Show(); panel1.Controls.SetChildIndex(ec, 0); this.ActiveControl = ec; ec.Focus(); } } } } this.RefreshPictureBox(); }
public void AddCanvasItem(CanvasItem item) { diagramRouter.AddItem(item); CanvasItemData itemData = new CanvasItemData(item, SizeGripMouseEntered, SizeGripMouseLeft); itemsData[item] = itemData; ClassCanvasItem classItem = item as ClassCanvasItem; if (classItem != null) { classesToData.Add(classItem.RepresentedClassType, itemData); foreach (CanvasItemData ci in itemsList) { ClassCanvasItem cci = ci.Item as ClassCanvasItem; if (cci != null) { Route r = null; if (cci.RepresentedClassType == classItem.RepresentedClassType.BaseClass) { r = diagramRouter.AddRoute(item, cci); } else if (classItem.RepresentedClassType == cci.RepresentedClassType.BaseClass) { r = diagramRouter.AddRoute(cci, classItem); } if (r != null) { r.EndShape = new RouteInheritanceShape(); } } } } itemsList.AddLast(itemData); item.RedrawNeeded += HandleRedraw; item.LayoutChanged += HandleItemLayoutChange; item.PositionChanging += HandleItemPositionChange; item.SizeChanging += HandleItemSizeChange; }
void pictureBox1_MouseDoubleClick(object sender, System.Windows.Forms.MouseEventArgs e) { PointF pos = new PointF(e.X / zoom, e.Y / zoom); lastMouseClickPosition = pos; CanvasItemData itemNode = FindCanvasItemNode(pos); if (itemNode != null) { if (itemNode.Item is LabelItem) { CanvasItemData state = (itemNode.Item as LabelItem).FindStateDataBasedOnLabelItem(this); ItemDoubleClick(this, new CanvasItemEventArgs(state)); } else if (itemNode.Item is Transition) { Route route = (itemNode.Item as Transition).FindSelectedRouteBasedOnTransition(this); RouteDoubleClick(this, new CanvasRouteEventArgs(route)); } else { ItemDoubleClick(this, new CanvasItemEventArgs(itemNode)); } } else { foreach (Route route in diagramRouter.Routes) { if (route.IsBelongRoute(pos)) { RouteDoubleClick(this, new CanvasRouteEventArgs(route)); break; } } } }
public void AddCanvasItem (CanvasItem item) { diagramRouter.AddItem(item); CanvasItemData itemData = new CanvasItemData(item, SizeGripMouseEntered, SizeGripMouseLeft); itemsData[item] = itemData; ClassCanvasItem classItem = item as ClassCanvasItem; if (classItem != null) { classesToData.Add(classItem.RepresentedClassType, itemData); foreach (CanvasItemData ci in itemsList) { ClassCanvasItem cci = ci.Item as ClassCanvasItem; if (cci != null) { Route r = null; if (cci.RepresentedClassType == classItem.RepresentedClassType.BaseClass) r = diagramRouter.AddRoute(item, cci); else if (classItem.RepresentedClassType == cci.RepresentedClassType.BaseClass) r = diagramRouter.AddRoute(cci, classItem); if (r != null) r.EndShape = new RouteInheritanceShape(); } } } itemsList.AddLast(itemData); item.RedrawNeeded += HandleRedraw; item.LayoutChanged += HandleItemLayoutChange; item.PositionChanging += HandleItemPositionChange; item.SizeChanging += HandleItemSizeChange; }
// Start is called before the first frame update void Start() { inv.Add(CanvasItemData.CreateItem(1)); #region find parents // inv invparent = GameObject.Find("BackPack"); // quest questparent = GameObject.Find("QuestItem"); // weapons weaponparent[0] = GameObject.Find("Weapon1img"); weaponparent[1] = GameObject.Find("Weapon2img"); weaponparent[2] = GameObject.Find("Relicimg"); // equip armourparent[0] = GameObject.Find("headimg"); armourparent[1] = GameObject.Find("chestimg"); armourparent[2] = GameObject.Find("armsimg"); armourparent[3] = GameObject.Find("legsimg"); #endregion #region add parent children to list of images // search and get images for (int i = 0; i < invparent.transform.childCount + 1; i++) { invSlots.Add(invparent.GetComponentsInChildren <Image>()[i]); } // remove first in list because it is dumb and gets the parent's image invSlots.RemoveAt(0); for (int i = 0; i < questparent.transform.childCount + 1; i++) { questSlots.Add(questparent.GetComponentsInChildren <Image>()[i]); } // remove first in list because it is dumb and gets the parent's image questSlots.RemoveAt(0); for (int i = 0; i < 4; i++) { // one parent per image so yeah armourSlots.Add(armourparent[i].GetComponentInChildren <Image>()); } for (int i = 0; i < 3; i++) { // one parent per image so yeah weaponSlots.Add(weaponparent[i].GetComponentInChildren <Image>()); } #endregion #region tooltip text itemName = GameObject.Find("NameTxt").GetComponent <Text>(); itemDesc = GameObject.Find("DescTxt").GetComponent <Text>(); itemAmount = GameObject.Find("AmountTxt").GetComponent <Text>(); itemValue = GameObject.Find("ValueTxt").GetComponent <Text>(); toolTipPanel.SetActive(false); #endregion #region addItems // for (int i = 0; i < invparent.transform.childCount; i++) // { inv.Add(CanvasItemData.CreateItem(0)); inv.Add(CanvasItemData.CreateItem(2)); inv.Add(CanvasItemData.CreateItem(3)); inv.Add(CanvasItemData.CreateItem(4)); invSlots[1].sprite = inv[1].Icon; //invSlots[i] = inv[i].Icon; // } #endregion }
private void PictureBox1MouseUp(object sender, MouseEventArgs e) { PointF pos = new PointF(e.X / zoom, e.Y / zoom); switch (this.multiSelectPhase) { case MultiObjectSelect.STAR: if (!(pos.X == lastMouseDownPosition.X && pos.Y == lastMouseDownPosition.Y)) { this.multiSelectPhase = MultiObjectSelect.AREA_SELECTED; this.selectedArea.X = (int)Math.Min(lastMouseDownPosition.X, pos.X); this.selectedArea.Y = (int)Math.Min(lastMouseDownPosition.Y, pos.Y); this.selectedArea.Width = (int)Math.Abs(lastMouseDownPosition.X - pos.X); this.selectedArea.Height = (int)Math.Abs(lastMouseDownPosition.Y - pos.Y); List <CanvasItemData> selectedItems = new List <CanvasItemData>(); foreach (CanvasItemData item in itemsList) { if (GraphUltility.IsBelongRectangle(this.selectedArea, new PointF(item.Item.X, item.Item.Y))) { selectedItems.Add(item); } } this.selectedItems.Clear(); this.selectedItems.AddRange(selectedItems); foreach (CanvasItemData selectedItem in this.selectedItems) { selectedItem.Item.HandleMouseDown(new PointF(selectedItem.Item.X, selectedItem.Item.Y)); } CanvasItemsSelected(this, new CanvasItemsEventArgs(selectedItems)); this.Refresh(); this.RefreshPictureBox(); } break; case MultiObjectSelect.START_MOVING: this.SaveCurrentCanvas(this, EventArgs.Empty); FinishMultiObjectAction(); break; default: break; } if (dragItemNode != null) { dragItemNode.Item.HandleMouseUp(pos); if (this.lastMouseDownPosition != pos) { this.SaveCurrentCanvas(this, EventArgs.Empty); } } dragItemNode = null; CanvasItemData itemNode = FindCanvasItemNode(pos); if (itemNode != null) { itemNode.Item.HandleMouseUp(pos); } }
private void PictureBox1MouseMove(object sender, MouseEventArgs e) { HoldRedraw = true; PointF pos = new PointF(e.X / zoom, e.Y / zoom); if (dragItemNode != null) { dragItemNode.Item.HandleMouseMove(pos); } else if (this.multiSelectPhase == MultiObjectSelect.START_MOVING) { float xOffSet = pos.X - lastMouseDownPosition.X; float yOffSet = pos.Y - lastMouseDownPosition.Y; foreach (CanvasItemData selectedItem in this.selectedItems) { float newPositionX = selectedItem.Item.X + xOffSet; float newPositionY = selectedItem.Item.Y + yOffSet; selectedItem.Item.MoveFast(newPositionX, newPositionY); } this.lastMouseDownPosition = pos; } else { Route hoverRoute = null; CanvasItemData itemNode = FindCanvasItemNode(pos); if (itemNode == null) { foreach (Route route in diagramRouter.Routes) { if (route.IsBelongRoute(pos)) { hoverRoute = route; break; } } } //only free when it is not selected and hover out //only hover when not selected and hover in if (itemNode == null && hoverRoute == null) { if (this.hoverItemNode != null) { this.hoverItemNode.Item.HandleMouseHoverOut(this); } if (this.hoverRoute != null) { this.hoverRoute.HandleMouseHoverOut(this); } } else if (itemNode != null && itemNode != this.hoverItemNode) { if (this.hoverItemNode != null) { this.hoverItemNode.Item.HandleMouseHoverOut(this); } itemNode.Item.HandleMouseHoverIn(this); if (this.hoverRoute != null) { this.hoverRoute.HandleMouseHoverOut(this); } } else if (hoverRoute != null && hoverRoute != this.hoverRoute) { if (this.hoverItemNode != null) { this.hoverItemNode.Item.HandleMouseHoverOut(this); } if (this.hoverRoute != null) { this.hoverRoute.HandleMouseHoverOut(this); } hoverRoute.HandleMouseHoverIn(this); } this.hoverItemNode = itemNode; this.hoverRoute = hoverRoute; this.Refresh(); this.RefreshPictureBox(); } HoldRedraw = false; }
private void PictureBox1MouseDown(object sender, MouseEventArgs e) { itemSelected = false; HoldRedraw = true; PointF pos = new PointF(e.X / zoom, e.Y / zoom); if (this.multiSelectPhase == MultiObjectSelect.AREA_SELECTED) { if (GraphUltility.IsBelongRectangle(this.selectedArea, pos)) { this.multiSelectPhase = MultiObjectSelect.START_MOVING; foreach (CanvasItemData selectedItem in this.selectedItems) { selectedItem.JustGainedFocus = true; selectedItem.Focused = true; itemsList.Remove(selectedItem); itemsList.Add(selectedItem); selectedItem.Item.HandleMouseDown(new PointF(selectedItem.Item.X, selectedItem.Item.Y)); } this.CanvasItemsSelected(this, new CanvasItemsEventArgs(this.selectedItems)); } else { this.multiSelectPhase = MultiObjectSelect.STAR; } } lastMouseDownPosition = pos; lastMouseClickPosition = pos; if (e.Button == MouseButtons.Right) { this.lastRightClickPosition = pos; } CanvasItemData itemNode = FindCanvasItemNode(pos); dragItemNode = itemNode; if (!ctrlDown) { foreach (CanvasItemData item in itemsList) { item.Item.StopEditing(); if (itemNode == null || item != itemNode) { item.Focused = false; if (item.Item is StateItem) { (item.Item as StateItem).CurrentState = ItemState.Free; } } } } foreach (Route route in diagramRouter.Routes) { route.CurrentState = ItemState.Free; } if (itemNode != null) { if (!itemNode.Focused) { itemNode.JustGainedFocus = true; itemNode.Focused = true; itemsList.Remove(itemNode); itemsList.Add(itemNode); itemNode.Item.HandleMouseDown(pos); itemSelected = true; CanvasItemSelected(this, new CanvasItemEventArgs(itemNode)); } else { itemSelected = true; itemNode.Item.HandleMouseDown(pos); CanvasItemSelected(this, new CanvasItemEventArgs(itemNode)); } } else { foreach (Route route in diagramRouter.Routes) { if (route.IsBelongRoute(pos)) { route.CurrentState = ItemState.Selected; CanvasRouteSelected(this, new CanvasRouteEventArgs(route)); this.itemSelected = true; break; } } if (!this.itemSelected) { CanvasItemSelected(this, new CanvasItemEventArgs(null)); } } HoldRedraw = false; this.RefreshPictureBox(); }
/// <summary> /// добавление новой ноды /// </summary> /// <param name="item"></param> public void AddCanvasItem(CanvasItem item, CanvasItem itemAt = null) { NodeCanvasItem classItem = item as NodeCanvasItem; if (classItem != null) { classItem.OffsetPointTo(); } diagramRouter.AddItem(item); CanvasItemData itemData = new CanvasItemData(item, SizeGripMouseEntered, SizeGripMouseLeft); itemsData[item] = itemData; if (classItem != null) { nodesToData.Add(classItem.GetNodeData, item); foreach (CanvasItemData ci in itemsList) { NodeCanvasItem cci = ci.Item as NodeCanvasItem; if (cci != null) { //Route r = null; foreach (LinkTo link in cci.GetNodeData.LinkedToNodes) { if (link.NameTo == classItem.GetNodeData.Name) { // link: from >>> to Route r = diagramRouter.AddRoute(cci, classItem, link.ContentLine); r.EndShape = new RouteInheritanceShape(); r.StartShape = new RouteStartShape(); } } //if (r != null) {} foreach (LinkTo link in classItem.GetNodeData.LinkedToNodes) { if (link.NameTo == cci.GetNodeData.Name) { // link: from >>> to Route r = diagramRouter.AddRoute(classItem, cci, link.ContentLine); r.EndShape = new RouteInheritanceShape(); r.StartShape = new RouteStartShape(); } } //if (r != null && r.EndShape == null) {} } } } // добавление ноды в лист if (itemAt != null) { LinkedListNode <CanvasItemData> find = itemsList.Find(itemsData[itemAt]); if (find != null) { itemsList.AddBefore(find, itemData); } else { itemsList.AddLast(itemData); } } else { itemsList.AddLast(itemData); } item.RedrawNeeded += HandleRedraw; item.LayoutChanged += HandleItemLayoutChange; item.PositionChanging += HandleItemPositionChange; item.SizeChanging += HandleItemSizeChange; }