예제 #1
0
 public SignalChooser(INodeWrapper nodeItem, NodeSignalIn initialSignalIn, double maxWidth, TextAlignment textAlignment)
 {
     NodeItem = nodeItem;
     SignalIn = initialSignalIn;
     MaxWidth = maxWidth;
     TextAlignment = textAlignment;
 }
예제 #2
0
        public static NodeAnalogOutput BuildWith(FieldIdentifier Code, FieldString Address, FieldSignalName OutputName)
        {
            //build fields
            Dictionary <FieldIdentifier, FieldBase> mutableFields =
                new Dictionary <FieldIdentifier, FieldBase>();

            mutableFields.Add(new FieldIdentifier(m_CodeName), Code);
            mutableFields.Add(new FieldIdentifier(m_AddressName), Address);
            mutableFields.Add(new FieldIdentifier(m_ForcedName), new FieldBool(false));
            mutableFields.Add(new FieldIdentifier(m_ForcedValueName), new FieldConstant(FieldDataType.DataTypeEnum.NUMBER, FieldDataType.DefaultValue(FieldDataType.DataTypeEnum.NUMBER)));
            mutableFields.Add(new FieldIdentifier(m_OutputNameName), OutputName);
            //Add Fields here: mutableFields.Add(new FieldIdentifier(m_CodeName), Code);

            //build children
            KeyedNodeCollection <NodeBase> mutableChildren =
                new KeyedNodeCollection <NodeBase>();

            mutableChildren.Add(NodeSignalIn.BuildWith(
                                    new FieldDataType(FieldDataType.DataTypeEnum.NUMBER),
                                    new FieldConstant(FieldDataType.DataTypeEnum.NUMBER, FieldDataType.DefaultValue(FieldDataType.DataTypeEnum.NUMBER))));
            //Add Children here: mutableChildren.Add(SomeChild);

            //build node
            NodeAnalogOutput Builder = new NodeAnalogOutput(
                new ReadOnlyDictionary <FieldIdentifier, FieldBase>(mutableFields),
                new ReadOnlyCollection <NodeBase>(mutableChildren));

            return(Builder);
        }
예제 #3
0
 public SignalInItem(ISolutionItem parent, NodeSignalIn signalIn)
     : base(parent, string.Empty)
 {
     ContextMenu = extensionService.Sort(contextMenu);
     SignalIn = signalIn;
     runtimeService.SignalChanged += new SignalChangedHandler(runtimeService_SignalChanged);
 }
예제 #4
0
 public NodeAnalogOutput SetSignalIn(NodeSignalIn NewSignalIn)
 {
     if (NewSignalIn == null)
     {
         throw new ArgumentNullException(m_SignalInName);
     }
     return(m_SignalIn.Set(NewSignalIn));
 }
예제 #5
0
        public NodeInstruction SetSignalInToSignalId(int index, FieldGuid signalId)
        {
            var oldSignalIn    = this.NodeSignalInChildren[index];
            var newSignalIn    = NodeSignalIn.BuildWith(oldSignalIn.DataType, signalId);
            var newInstruction = this.NodeSignalInChildren.Replace(oldSignalIn, newSignalIn);

            return(newInstruction);
        }
        public SignalDescriptionDisplay(IInstructionItem instructionNode, NodeSignalIn signalIn, double maxWidth, double maxHeight, TextAlignment textAlignment)
            : base(string.Empty, maxWidth, maxHeight, textAlignment, false)
        {
            if (instructionNode == null)
            {
                throw new ArgumentNullException("instructionNode");
            }

            m_instructionNode = instructionNode;
            SignalIn = signalIn;
            if (runtimeService != null)
            {
                runtimeService.SignalChanged += new SignalChangedHandler(runtimeService_SignalChanged);
            }
        }
예제 #7
0
        public static NodeSignalIn BuildWith(FieldDataType DataType, FieldDataType CompatibleTypes, FieldConstant Literal)
        {
            //build fields
            Dictionary <FieldIdentifier, FieldBase> mutableFields =
                new Dictionary <FieldIdentifier, FieldBase>();

            mutableFields.Add(new FieldIdentifier(m_DataTypeName), DataType);
            mutableFields.Add(new FieldIdentifier(m_CompatibleTypesName), CompatibleTypes);
            mutableFields.Add(new FieldIdentifier(m_LiteralName), Literal);
            //Add Fields here: mutableFields.Add(new FieldIdentifier(m_CodeName), Code);

            //build children
            KeyedNodeCollection <NodeBase> mutableChildren =
                new KeyedNodeCollection <NodeBase>();
            //Add Children here: mutableChildren.Add(SomeChild);

            //build node
            NodeSignalIn Builder = new NodeSignalIn(
                new ReadOnlyDictionary <FieldIdentifier, FieldBase>(mutableFields),
                new ReadOnlyCollection <NodeBase>(mutableChildren));

            return(Builder);
        }
예제 #8
0
 /// <summary>
 /// Displays the Dialog as modal
 /// </summary>
 /// <returns>Signal ID</returns>
 public NodeSignalIn ShowDialog(INodeWrapper requester, NodeSignalIn originalSignalIn)
 {
     m_dataTypefilter = originalSignalIn.CompatibleTypes.DataType;
     OriginalSignalIn = originalSignalIn;
     setDefaultValues();
     NodeItem = requester;
     Window dlg = new SignalChooserDialogView();
     dlg.Owner = mainWindowExport.Value;
     dlg.DataContext = this;
     dlg.ShowDialog();
     if (SignalSelected)
     {
         return NodeSignalIn.BuildWith(OriginalSignalIn.DataType, OriginalSignalIn.CompatibleTypes, SignalId);
     }
     else
     {
         return NodeSignalIn.BuildWith(OriginalSignalIn.DataType, OriginalSignalIn.CompatibleTypes, Literal);
     }
 }
예제 #9
0
 public static void SetControlFillColorBySignalIn(DependencyObject target, NodeSignalIn value)
 {
     target.SetValue(SignalValueBehavior.ControlFillColorBySignalInProperty, value);
 }
예제 #10
0
 public Int16 GetBooleanSignalAddress(NodeSignalIn signalIn)
 {
     if (signalIn == null) throw new ArgumentNullException("signalIn");
     Int16 result;
     if (!this.TryGetBooleanAddressBySignal(signalIn, out result))
     {
         throw new Exception("Signal not found.");
     }
     return result;
 }
예제 #11
0
 public NodeSignalIn SignalDialog(INodeWrapper requester, NodeSignalIn defaultSignalIn)
 {
     if (DisconnectDialog(requester))
     {
         return signalChooserDialog.ShowDialog(requester, defaultSignalIn);
     }
     else
     {
         return defaultSignalIn;
     }
 }
예제 #12
0
 public bool TryGetNumericAddressBySignal(NodeSignalIn signalIn, out Byte? numericAddress)
 {
     var signalId = Guid.Parse(signalIn.SignalId.ToString());
     if (this.m_numericAddressBySignal.ContainsKey(signalId))
     {
         numericAddress = this.m_numericAddressBySignal[signalId];
         return true;
     }
     numericAddress = null;
     return false;
 }
예제 #13
0
 public bool TryGetBooleanAddressBySignal(NodeSignalIn signalIn, out Int16 booleanAddress)
 {
     if (signalIn == null) throw new ArgumentNullException("signalIn");
     if (signalIn.SignalId == null) throw new ArgumentNullException("signalIn.SignalId");
     var signalId = Guid.Parse(signalIn.SignalId.ToString());
     if (this.m_booleanAddressBySignal.ContainsKey(signalId))
     {
         booleanAddress = this.m_booleanAddressBySignal[signalId];
         return true;
     }
     booleanAddress = -1;
     return false;
 }
예제 #14
0
 public byte GetNumericSignalAddress(NodeSignalIn signalIn)
 {
     if (signalIn == null) throw new ArgumentNullException("signalIn");
     Byte? result;
     if (!this.TryGetNumericAddressBySignal(signalIn, out result))
     {
         throw new Exception("Signal not found.");
     }
     return result.Value;
 }
예제 #15
0
        public static NodeSignalIn BuildWith(FieldDataType DataType, FieldDataType CompatibleTypes, FieldConstant Literal)
        {
            //build fields
            Dictionary<FieldIdentifier, FieldBase> mutableFields =
                new Dictionary<FieldIdentifier, FieldBase>();
            mutableFields.Add(new FieldIdentifier(m_DataTypeName), DataType);
            mutableFields.Add(new FieldIdentifier(m_CompatibleTypesName), CompatibleTypes);
            mutableFields.Add(new FieldIdentifier(m_LiteralName), Literal);
            //Add Fields here: mutableFields.Add(new FieldIdentifier(m_CodeName), Code);

            //build children
            KeyedNodeCollection<NodeBase> mutableChildren =
                new KeyedNodeCollection<NodeBase>();
            //Add Children here: mutableChildren.Add(SomeChild);

            //build node
            NodeSignalIn Builder = new NodeSignalIn(
                new ReadOnlyDictionary<FieldIdentifier, FieldBase>(mutableFields),
                new ReadOnlyCollection<NodeBase>(mutableChildren));

            return Builder;
        }
        private void readTextBox()
        {
            var tb = textBox;
            var selectedText = tb.SelectedText;
            string unselectedText;
            if (selectedText.Length > 0)
            {
                unselectedText = tb.Text.Replace(selectedText, string.Empty);
            }
            else
            {
                unselectedText = tb.Text;
            }

            if (unselectedText.Length > 0)
            {
                // check to see if the value entered is a valid literal
                object parseResult;
                if (SignalIn.CompatibleTypes.TryParse(unselectedText, out parseResult))
                {
                    tb.Text = parseResult.ToString();
                    m_editedSignalIn = NodeSignalIn.BuildWith(
                            SignalIn.DataType, SignalIn.CompatibleTypes,
                            new FieldConstant(SignalIn.CompatibleTypes.DataType, parseResult));
                }
                else
                {
                    Tuple<string, NodeSignal> closestSignal = findClosestMatchingSignal(unselectedText);
                    if (closestSignal != null)
                    {
                        var signalName = closestSignal.Item1;
                        var nSignal = closestSignal.Item2;
                        tb.Text = signalName;
                        tb.SelectionStart = tb.Text.ToLower().IndexOf(unselectedText.ToLower()) + unselectedText.Length;
                        tb.SelectionLength = tb.Text.Length - unselectedText.Length;
                        m_editedSignalIn = NodeSignalIn.BuildWith(
                            SignalIn.DataType, SignalIn.CompatibleTypes,
                            closestSignal.Item2.SignalId);
                    }
                    else
                    {
                        m_editedSignalIn = SignalIn;
                    }
                }
            }
            else
            {
                m_editedSignalIn = SignalIn;
            }
        }
예제 #17
0
 public NodeAnalogOutput SetSignalIn(NodeSignalIn NewSignalIn)
 {
     if (NewSignalIn == null)
     {
         throw new ArgumentNullException(m_SignalInName);
     }
     return m_SignalIn.Set(NewSignalIn);
 }