private void UpdateSignals(string[] newSignals)
        {
            signals = new string[customInterfaceElementList.Count];
            for (int i = 0; i < customInterfaceElementList.Count; i++)
            {
                var element = customInterfaceElementList[i];
                if (i < newSignals.Length)
                {
                    var newSignal = newSignals[i];
                    signals[i] = newSignal;
                    element.ShouldSetProperty = element.Signal != newSignal;
                    element.Signal            = newSignal;
                }
                else
                {
                    signals[i] = element.Signal;
                }

                if (element.HasPropertyName && element.ShouldSetProperty)
                {
                    if (element.TargetOnlyParentProperty)
                    {
                        if (SerializableProperties.ContainsKey(element.PropertyName))
                        {
                            SerializableProperties[element.PropertyName].TrySetValue(this, element.Signal);
                        }
                    }
                    else
                    {
                        foreach (var po in item.AllPropertyObjects)
                        {
                            if (!po.SerializableProperties.ContainsKey(element.PropertyName))
                            {
                                continue;
                            }
                            po.SerializableProperties[element.PropertyName].TrySetValue(po, element.Signal);
                        }
                    }
                    customInterfaceElementList[i].ShouldSetProperty = false;
                }
            }
            UpdateSignalsProjSpecific();
        }
 private void ValueChanged(CustomInterfaceElement numberInputElement, int value)
 {
     if (numberInputElement == null)
     {
         return;
     }
     numberInputElement.Signal = value.ToString();
     if (!numberInputElement.TargetOnlyParentProperty)
     {
         foreach (ISerializableEntity e in item.AllPropertyObjects)
         {
             if (!e.SerializableProperties.ContainsKey(numberInputElement.PropertyName))
             {
                 continue;
             }
             e.SerializableProperties[numberInputElement.PropertyName].TrySetValue(e, value);
         }
     }
     else if (SerializableProperties.ContainsKey(numberInputElement.PropertyName))
     {
         SerializableProperties[numberInputElement.PropertyName].TrySetValue(this, value);
     }
 }
 private void TextChanged(CustomInterfaceElement textElement, string text)
 {
     if (textElement == null)
     {
         return;
     }
     textElement.Signal = text;
     if (!textElement.TargetOnlyParentProperty)
     {
         foreach (ISerializableEntity e in item.AllPropertyObjects)
         {
             if (!e.SerializableProperties.ContainsKey(textElement.PropertyName))
             {
                 continue;
             }
             e.SerializableProperties[textElement.PropertyName].TrySetValue(e, text);
         }
     }
     else if (SerializableProperties.ContainsKey(textElement.PropertyName))
     {
         SerializableProperties[textElement.PropertyName].TrySetValue(this, text);
     }
 }