/* * Here, newSubView is set to false when adding sub views from the constructor (so the * view's data type is already added to ArgTypes. From outside the class the public * AddSubView defined above is called, always for new subviews */ private void AddSubView(IBlockView v, DataType argType, int i, bool newSubView) { if (!(v is LabelView || v is EditableLabelView)) { argIndexes.Add(i); trueArgs.Add(true); if (newSubView) { ArgTypes.Add(argType); } } else { trueArgs.Add(false); } if (v.Parent != null) { ((ContentView)v.Parent).Detach(v); } Attach(v); argViews.Add(v); parts.Add(v.Assemble()); Reassemble(); Changed(this); }
internal void MouseMove(Point point) { if (state == CanvasState.Dragging) { Point d = point.Minus(draggingOrigin); Point p1 = allViews[dragged]; Point p2 = p1.Offseted(d); Size sz = dragged.Assemble().Size; Rectangle inva = Rectangle.Union(new Rectangle(p1, sz), new Rectangle(p2, sz)); inva.Inflate(5, 5); draggedModel.Location = p2; draggingOrigin = point; DropRegion active; if (FindActiveDropRegion(ViewBounds(dragged), out active)) { Rectangle topLevelDest = ViewBounds(active.Destination.AbsoluteAncestor()); inva = Rectangle.Union(inva, topLevelDest); } Update(inva); } if (state == CanvasState.Ready) { /* * IBlockView hit = HitTest(point); * if (hit != null) * canvasView.status = hit.ToString(); * else * canvasView.status = "<None>"; * //*/ } }
private Rectangle ViewBounds(IBlockView v) { if (!allViews.ContainsKey(v)) { return(Rectangle.Empty); } return(new Rectangle(allViews[v], v.Assemble().Size)); }
public void SetSubView(int i, IBlockView v) { IBlockView oldSubView = argViews[i]; Detach(oldSubView); if (v.Parent != null) { ((ContentView)v.Parent).Detach(v); } Attach(v); argViews[i] = v; parts[i] = v.Assemble(); Reassemble(); Changed(this); }
private Rectangle ViewBounds(IBlockView v) { if (!allViews.ContainsKey(v)) return Rectangle.Empty; return new Rectangle(allViews[v], v.Assemble().Size); }
public static Rectangle AbsoluteBounds(this IBlockView v) { return(new Rectangle(v.AbsolutePos(), v.Assemble().Size)); }