public override GH_ObjectResponse RespondToMouseUp(GH_Canvas sender, Grasshopper.GUI.GH_CanvasMouseEvent e) { if (_drawing) { _drawing = false; sender.CanvasPostPaintObjects -= CanvasPostPaintObjects; GH_Document doc = sender.Document; if (doc != null) { IGH_Attributes att = doc.FindAttribute(e.CanvasLocation, true); if (att != null) { if (att is IRoomStructure <IGH_DocumentObject> target) { Owner.RecordUndoEvent("Add Modifier"); if (att.DocObject is RoomInstance) { if ((att.DocObject as RoomInstance).RoomId != (DocObject as RoomInstance).RoomId) { if (targetObjectList.Find(item => (item as RoomInstance).RoomId == (att.DocObject as RoomInstance).RoomId) == null) { AddAdjacence(att.DocObject); target.AddAdjacence(this.DocObject as IGH_DocumentObject); } else { RemoveAdjacence(att.DocObject); target.RemoveAdjacence(this.DocObject as IGH_DocumentObject); } } } else if (att.DocObject is HouseInstance houseInstance) { if ((att as HouseInstanceAttributes).roomInstancesList.Find(item => item.RoomId == (this.DocObject as RoomInstance).RoomId) == null) { target.AddAdjacence(this.DocObject as IGH_DocumentObject); } else { target.RemoveAdjacence(this.DocObject as IGH_DocumentObject); } } // Owner.AddTarget(att.DocObject.InstanceGuid); IGH_ActiveObject obj = att.DocObject as IGH_ActiveObject; // if (obj != null) // obj.ExpireSolution(true); // this.DocObject.ExpireSolution(true); } } } sender.Invalidate(); return(GH_ObjectResponse.Release); } return(base.RespondToMouseUp(sender, e)); }
public override GH_ObjectResponse RespondToMouseUp(GH_Canvas sender, Grasshopper.GUI.GH_CanvasMouseEvent e) { if (_drawing) { _drawing = false; sender.CanvasPostPaintObjects -= CanvasPostPaintObjects; GH_Document doc = sender.Document; if (doc != null) { IGH_Attributes att = doc.FindAttribute(e.CanvasLocation, true); if (att != null) { if (att.DocObject is IModifiable) { Owner.RecordUndoEvent("Add Modifier"); Owner.AddTarget(att.DocObject.InstanceGuid); IGH_ActiveObject obj = att.DocObject as IGH_ActiveObject; if (obj != null) { obj.ExpireSolution(true); } } } } sender.Invalidate(); return(GH_ObjectResponse.Release); } return(base.RespondToMouseUp(sender, e)); }
public override GH_ObjectResponse RespondToMouseDown(GH_Canvas sender, Grasshopper.GUI.GH_CanvasMouseEvent e) { _drawing = false; _drawingBox = InnerComponentBounds; if (e.Button == System.Windows.Forms.MouseButtons.Left) { // If on outer disc, but not in inner disc.. then start a wire drawing process. bool onOuterDisc = Grasshopper.GUI.GH_GraphicsUtil.IsPointInEllipse(Bounds, e.CanvasLocation); bool onInnerDisc = Grasshopper.GUI.GH_GraphicsUtil.IsPointInEllipse(InnerComponentBounds, e.CanvasLocation); if (onOuterDisc && !onInnerDisc) { // Begin arrow drawing behaviour. _drawing = true; sender.CanvasPostPaintObjects += CanvasPostPaintObjects; return(GH_ObjectResponse.Capture); } } // Otherwise revert to default behaviour. return(base.RespondToMouseDown(sender, e)); }
public override GH_ObjectResponse RespondToMouseMove(GH_Canvas sender, Grasshopper.GUI.GH_CanvasMouseEvent e) { if (_drawing) { _drawingBox = new RectangleF(e.CanvasLocation, new SizeF(0, 0)); GH_Document doc = sender.Document; if (doc != null) { IGH_Attributes att = doc.FindAttribute(e.CanvasLocation, true); if (att != null) { if (att is IRoomStructure <IGH_DocumentObject> ) { _drawingBox = att.Bounds; } } } sender.Invalidate(); return(GH_ObjectResponse.Handled); } return(base.RespondToMouseMove(sender, e)); }
public override GH_ObjectResponse RespondToMouseUp(GH_Canvas sender, Grasshopper.GUI.GH_CanvasMouseEvent e) { if (_drawing) { _drawing = false; sender.CanvasPostPaintObjects -= CanvasPostPaintObjects; GH_Document doc = sender.Document; if (doc != null) { IGH_Attributes att = doc.FindAttribute(e.CanvasLocation, true); if (att != null) { if (att is IRoomStructure <IGH_DocumentObject> target) { Owner.RecordUndoEvent("Add Modifier"); if (att.DocObject is RoomInstance) { if ((att.DocObject as RoomInstance).InstanceGuid != (DocObject as RoomInstance).InstanceGuid) { if (RoomInstance.allAdjacencesList.Find(i => i.a == att.DocObject.InstanceGuid.ToString() && i.b == DocObject.InstanceGuid.ToString()) == null && RoomInstance.allAdjacencesList.Find(i => i.b == att.DocObject.InstanceGuid.ToString() && i.a == DocObject.InstanceGuid.ToString()) == null) { AddAdjacence(att.DocObject); target.AddAdjacence(this.DocObject as IGH_DocumentObject); } /* * if (targetObjectList.Find(item => (item as RoomInstance).RoomId == (att.DocObject as RoomInstance).RoomId) == null) * { * AddAdjacence(att.DocObject); * target.AddAdjacence(this.DocObject as IGH_DocumentObject); * }*/ else { RemoveAdjacence(att.DocObject); target.RemoveAdjacence(this.DocObject as IGH_DocumentObject); } RoomInstance.allAdjacencesList = RoomInstance.allAdjacencesList.Distinct().ToList(); } } else if (att.DocObject is HouseInstance houseInstance) { if ((att as HouseInstanceAttributes).roomInstancesGuidList.Find(item => item == (this.DocObject as RoomInstance).InstanceGuid.ToString()) == null) { target.AddAdjacence(this.DocObject as IGH_DocumentObject); } else { target.RemoveAdjacence(this.DocObject as IGH_DocumentObject); } } IGH_ActiveObject obj = att.DocObject as IGH_ActiveObject; } } } sender.Invalidate(); return(GH_ObjectResponse.Release); } return(base.RespondToMouseUp(sender, e)); }