public HeliosValue(HeliosObject owner, BindingValue initialValue, string device, string name, string description, string valueDescription, BindingValueUnit unit) { _device = device; _name = name; _description = description; _valueDescription = valueDescription; _owner = new WeakReference(owner); _value = initialValue; _unit = unit; UpdateId(); }
public HeliosTrigger(HeliosObject source, string device, string name, string verb, string description, string valueDescription, BindingValueUnit unit) { _device = device; _name = name; _verb = verb; _description = description; _source = new WeakReference(source); _valueDescription = valueDescription; _unit = unit; UpdateId(); TriggerBindingDescription = "when" + (Device.Length > 0 ? " " + _device : "") + (_name.Length > 0 ? " " + _name + " on" : "") + " " + Source.Name + " " + _verb; }
public HeliosTrigger(HeliosObject source, string device, string name, string verb, string description, string valueDescription, BindingValueUnit unit) { _device = device; _name = name; _verb = verb; _description = description; _source = new WeakReference(source); _valueDescription = valueDescription; _unit = unit; UpdateId(); TriggerBindingDescription = "when" + (Device.Length > 0 ? " " + _device : "") + (_name.Length > 0 ? " " + _name + " on" : "") + " " + Source.Name + " " + _verb; }
public HeliosValue(HeliosObject owner, BindingValue initialValue, string device, string name, string description, string valueDescription, BindingValueUnit unit) { _device = device; _name = name; ActionDescription = description; ActionValueDescription = valueDescription; _owner = new WeakReference(owner); Value = initialValue; Unit = unit; UpdateId(); RecalculateName(); }
/// <summary> /// generate a very expensive descriptive path to the object provided, not usable for /// binding or any functionality other than UI and logging /// </summary> /// <param name="source"></param> /// <returns></returns> public static string GetDescriptivePath(HeliosObject source) { switch (source) { case HeliosVisual visual: return(GetVisualPath(visual)); case HeliosInterface heliosInterface: return($"Interface '{heliosInterface.Name}'"); default: return($"{source.TypeIdentifier} '{source.Name}'"); } }
public HeliosTrigger(HeliosObject source, string device, string name, string verb, string description, string valueDescription, BindingValueUnit unit) { _device = device; _name = name; TriggerVerb = verb; TriggerDescription = description; _source = new WeakReference(source); TriggerValueDescription = valueDescription; Unit = unit; UpdateId(); // NOTE: we do not subscribe to name changes on our target object, because we don't know when to unregister, as there is // no explicit cleanup of action objects RecalculateName(); }
public HeliosAction(HeliosObject target, string device, string name, string verb, string description, string valueDescription, BindingValueUnit unit) { _device = device; _target = new WeakReference(target); _name = name; _verb = verb; _description = description; _valueDescription = valueDescription; _unit = unit; UpdateId(); ActionBindingDescription = _verb + (Device.Length > 0 ? " " + _device : "") + (_name.Length > 0 ? " " + _name + " on" : "") + " " + Target.Name + (ActionRequiresValue ? " to %value%" : ""); if (ActionRequiresValue) { ActionInputBindingDescription = "to %value%"; } }
public HeliosAction(HeliosObject target, string device, string name, string verb, string description, string valueDescription, BindingValueUnit unit) { _device = device; _target = new WeakReference(target); _name = name; _verb = verb; _description = description; _valueDescription = valueDescription; _unit = unit; UpdateId(); ActionBindingDescription = _verb + (Device.Length > 0 ? " " + _device : "") + (_name.Length > 0 ? " " + _name + " on" : "") + " " + Target.Name + ( ActionRequiresValue ? " to %value%" : ""); if (ActionRequiresValue) { ActionInputBindingDescription = "to %value%"; } }
private void TraceTriggerFired() { // NOTE: deliberately crash if any of these are null HeliosObject target = (_targetAction.Target as IBindingAction).Target; if (target._tracing || _executing) { if (!_sTracesReported.Contains(Description)) { string loopType = _executing ? "Hard" : "Soft"; ConfigManager.LogManager.LogInfo($"{loopType} binding loop detected; Object {target.Name} may have triggered itself"); _sTraceLoop = true; _sTracesReported.Add(Description); } _sTracingSource = target; } HeliosObject source = (_triggerSource.Target as IBindingTrigger).Source; source._tracing = true; }
public HeliosAction(HeliosObject target, string device, string name, string verb, string description, string valueDescription, BindingValueUnit unit) { _device = device; _target = new WeakReference(target); _name = name; ActionVerb = verb; ActionDescription = description; ActionValueDescription = valueDescription; Unit = unit; UpdateId(); if (ActionRequiresValue) { ActionInputBindingDescription = "to %value%"; } // NOTE: we do not subscribe to name changes on our target object, because we don't know when to unregister, as there is // no explicit cleanup of action objects RecalculateName(); }
private void EndTraceTriggerFired() { if (_sTraceLoop) { ConfigManager.LogManager.LogInfo($" binding loop includes {Description}"); } HeliosObject source = (_triggerSource.Target as IBindingTrigger).Source; if (source._tracing) { source._tracing = false; if (_sTracingSource == source) { if (_sTraceLoop) { _sTraceLoop = false; ConfigManager.LogManager.LogInfo(" binding loop trace complete"); } _sTracingSource = null; } } }
public static string GetReferenceName(HeliosObject refObject) { StringBuilder sb = new StringBuilder(""); if (refObject is HeliosInterface refInterface) { sb.Append("Interface;;"); } if (refObject is HeliosVisual refControl) { sb.Append("Visual;"); sb.Append(GetVisualPath(refControl)); sb.Append(";"); } sb.Append(refObject.TypeIdentifier); sb.Append(";"); sb.Append(refObject.Name); sb.Append(""); return(sb.ToString()); }
public HeliosAction(HeliosObject target, string device, string name, string verb, string description) : this(target, device, name, verb, description, "", BindingValueUnits.NoValue) { }
public static string GetReferenceName(HeliosObject refObject) { StringBuilder sb = new StringBuilder(""); HeliosInterface refInterface = refObject as HeliosInterface; if (refInterface != null) { sb.Append("Interface;;"); } HeliosVisual refControl = refObject as HeliosVisual; if (refControl != null) { sb.Append("Visual;"); sb.Append(GetVisualPath(refControl)); sb.Append(";"); } sb.Append(refObject.TypeIdentifier); sb.Append(";"); sb.Append(refObject.Name); sb.Append(""); return sb.ToString(); }
private HeliosBinding DeserializeBinding(HeliosProfile profile, HeliosVisual root, string copyRoot, List <HeliosVisual> localObjects, XmlReader xmlReader) { TypeConverter boolConverter = TypeDescriptor.GetConverter(typeof(bool)); HeliosBinding binding = (HeliosBinding)CreateNewObject("Binding", ""); binding.BypassCascadingTriggers = (bool)boolConverter.ConvertFromString(null, CultureInfo.InvariantCulture, xmlReader.GetAttribute("BypassCascadingTriggers")); xmlReader.ReadStartElement("Binding"); HeliosObject source = ResolveReferenceName(profile, root, copyRoot, localObjects, xmlReader.GetAttribute("Source")); if (source != null) { string trigger = xmlReader.GetAttribute("Name"); if (source is IDynamicBindings dynamic) { binding.Trigger = dynamic.ResolveTrigger(trigger); } else if (source.Triggers.ContainsKey(trigger)) { binding.Trigger = source.Triggers[trigger]; } else if (source is HeliosVisual) { HeliosVisual parent = ((HeliosVisual)source).Parent; if (parent.Triggers.ContainsKey(trigger)) { source = parent; binding.Trigger = source.Triggers[trigger]; } } } else { Logger.Error("Binding Source Reference Unresolved: " + xmlReader.GetAttribute("Source")); } xmlReader.Read(); HeliosObject target = ResolveReferenceName(profile, root, copyRoot, localObjects, xmlReader.GetAttribute("Target")); if (target != null) { string action = xmlReader.GetAttribute("Name"); if (target is IDynamicBindings dynamic) { binding.Action = dynamic.ResolveAction(action); } else if (target.Actions.ContainsKey(action)) { binding.Action = target.Actions[action]; } else if (target is HeliosVisual) { HeliosVisual parent = ((HeliosVisual)target).Parent; if (parent.Actions.ContainsKey(action)) { target = parent; binding.Action = target.Actions[action]; } } } else { Logger.Error("Binding Target Reference Unresolved: " + xmlReader.GetAttribute("Target")); } xmlReader.Read(); switch (xmlReader.Name) { case "StaticValue": binding.ValueSource = BindingValueSources.StaticValue; binding.Value = xmlReader.ReadElementString("StaticValue"); break; case "TriggerValue": binding.ValueSource = BindingValueSources.TriggerValue; xmlReader.Read(); break; case "LuaScript": binding.ValueSource = BindingValueSources.LuaScript; binding.Value = xmlReader.ReadElementString("LuaScript"); break; } if (xmlReader.Name.Equals("Condition")) { binding.Condition = xmlReader.ReadElementString("Condition"); } xmlReader.ReadEndElement(); return(binding); }
public HeliosAction(HeliosObject target, string device, string name, string verb, string description) : this(target, device, name, verb, description, "", BindingValueUnits.NoValue) { }
public HeliosTrigger(HeliosObject source, string device, string name, string verb, string description) : this(source, device, name, verb, description, "", BindingValueUnits.NoValue) { }
public HeliosTrigger(HeliosObject source, string device, string name, string verb, string description) : this(source, device, name, verb, description, "", BindingValueUnits.NoValue) { }