Ejemplo n.º 1
0
        public GraphicInput(BaseElement linkedObject)
            : base(linkedObject)
        {
            ConstantInput input = (linkedObject as ConstantInput);

            if (input != null)
            {
                input.OnStateChanged += new DigitalClasses.Events.NotifyEvent(input_OnStateChanged);
                if (linkedObject is SignalInput)
                {
                    (input as SignalInput).Signal.OnSignalChanged += new SignalChanged(Signal_OnSignalChanged);
                }
            }
        }
        private BaseElementData ConvertIOElement(BaseElement element)
        {
            BaseElementData elemData = null;

            if (element is Macro)
            {
                Macro            macro     = (Macro)element;
                MacroElementData macroData = new MacroElementData(macro.Name, macro.TypeName, macro.FileReference);
                macroData.Inputs            = ConvertTerminalArray(macro.Inputs);
                macroData.Outputs           = ConvertTerminalArray(macro.Outputs);
                macroData.Index             = macro.UpdateIndex;
                macroData.UnitDelay         = macro.UnitDelay;
                macroData.NegativeEdgeDelay = macro.NegEdgeDelay;
                macroData.PositiveEdgeDelay = macro.PosEdgeDelay;
                elemData = macroData;
            }
            if (element is Clock)
            {
                Clock     clock     = (Clock)element;
                ClockData clockData = new ClockData(clock.Name, clock.LowDuration, clock.HighDuration);
                clockData.Outputs = ConvertTerminalArray(clock.Outputs);
                elemData          = clockData;
            }
            if (element is SignalInput)
            {
                SignalInput      sigInput = (SignalInput)element;
                InputElementData inData   = new InputElementData(sigInput.Name, sigInput.SignalName);
                inData.Outputs = ConvertTerminalArray(sigInput.Outputs);
                elemData       = inData;
            }
            else if (element is ConstantInput)
            {
                ConstantInput     conInput = (ConstantInput)element;
                ConstantInputData inData   = new ConstantInputData(conInput.Name, conInput.State.ToString());
                inData.Outputs = ConvertTerminalArray(conInput.Outputs);
                elemData       = inData;
            }
            if (element is SignalOutput)
            {
                SignalOutput      sigOutput = (SignalOutput)element;
                OutputElementData outData   = new OutputElementData(sigOutput.Name, sigOutput.SignalName);
                outData.Inputs = ConvertTerminalArray(sigOutput.Inputs);
                elemData       = outData;
            }
            if (elemData == null && element is InputOutputElement)
            {
                InputOutputElement io     = (InputOutputElement)element;
                IOElementData      ioData = new IOElementData(io.Name, element.GetType().Name);
                ioData.Inputs            = ConvertTerminalArray(io.Inputs);
                ioData.Outputs           = ConvertTerminalArray(io.Outputs);
                ioData.Index             = io.UpdateIndex;
                ioData.UnitDelay         = io.UnitDelay;
                ioData.NegativeEdgeDelay = io.NegEdgeDelay;
                ioData.PositiveEdgeDelay = io.PosEdgeDelay;
                elemData = ioData;
            }
            if (elemData == null)
            {
                return(null);
            }
            if (element.LinkedObject != null)
            {
                GraphicInputOutputElement grIO = element.LinkedObject as GraphicInputOutputElement;
                elemData.X = grIO.Location.X;
                elemData.Y = grIO.Location.Y;
            }
            return(elemData);
        }