Exemple #1
0
        /*
         * 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);
        }
Exemple #2
0
 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>";
          * //*/
     }
 }
Exemple #3
0
 private Rectangle ViewBounds(IBlockView v)
 {
     if (!allViews.ContainsKey(v))
     {
         return(Rectangle.Empty);
     }
     return(new Rectangle(allViews[v], v.Assemble().Size));
 }
Exemple #4
0
        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);
 }
Exemple #6
0
 public static Rectangle AbsoluteBounds(this IBlockView v)
 {
     return(new Rectangle(v.AbsolutePos(), v.Assemble().Size));
 }