public bool CreateModel()
        {
            var nodeSet = new List <int>();

            mModel = CirSim.Sim.GetCircuitAsComposite();
            if (mModel == null)
            {
                return(false);
            }
            if (mModel.ExtList.Count == 0)
            {
                MessageBox.Show("Device has no external inputs/outputs!");
                return(false);
            }
            mModel.ExtList.Sort((ExtListEntry a, ExtListEntry b) => {
                return(a.name.ToLower().CompareTo(b.name.ToLower()));
            });
            int i;
            int postCount = mModel.ExtList.Count;

            mModel.SizeX = 2;
            mModel.SizeY = (postCount + 1) / 2;
            for (i = 0; i != postCount; i++)
            {
                bool left = i < mModel.SizeY;
                int  side = (left) ? ChipElm.SIDE_W : ChipElm.SIDE_E;
                var  pin  = mModel.ExtList[i];
                pin.pos  = left ? i : i - mModel.SizeY;
                pin.side = side;
                if (nodeSet.Contains(pin.node))
                {
                    MessageBox.Show("Can't have two input/output nodes connected!");
                    return(false);
                }
                nodeSet.Add(pin.node);
            }
            return(true);
        }
 public void SetModel(CustomCompositeModel m)
 {
     mModel = m;
 }